Я пытаюсь проксировать javascript и изображение, размещенное внешней стороной, с помощью nginx
Я запускаю свой сайт на https, и они предлагают файлы только через http, я уже контактировал с ними по этому поводу, но не могу указать временную шкалу, когда они уйдут, решить эту проблему.
Так что нет, я пытаюсь proxy_pass
эти файлы в моей конфигурации nginx у меня есть следующие блоки местоположения
location /blogcounter/image {
#rewrite ^/blogcounter(.*) /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://widget.external-domain.tld/$uri$is_args?$args;
}
location /blogcounter.js {
#rewrite ^/blogcounter(.*) /$1 break;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://widget.external-domain.tld/$uri$is_args?$args;
}
Виджет, который я хочу на своей странице, - это.
<a title="external-domain.tld" href="http://external-domain.tld/" id="hr-random_id" target="_parent">
<img src="https://my-domain.tld/blogcounter/image?image=red_s&blog_id=random_id" alt="alt-text" border="0">
</a>
<script type="text/javascript">
var hr_currentTime = new Date();
var hr_timestamp = Date.parse(hr_currentTime.getMonth() + 1 + "/" + hr_currentTime.getDate() + "/" + hr_currentTime.getFullYear()) / 1000;
document.write('<script type="text/javascript" src="https://my-domain.tld/blogcounter.js?blog_id=random_id×tamp=' + hr_timestamp +'"></script>');
</script>
Поэтому я хочу, чтобы клиентский запрос проходил через мой сервер с https, который заставляет мой сервер запрашивать файл с внешнего сервера и передавать его обратно клиенту. В настоящее время это еще не работает. Просмотрите запрос в журнале доступа, который также показывает код состояния 200, но ни изображение, ни файл javascript не отправляются обратно. Кто-нибудь может помочь с тем, что делаю не так?
Отображение URL-адреса клиента, например:
https://my-domain.tld/blogcounter/image?image=red_s&blog_id=random_id
на восходящий URL, например:
http://widget.external-domain.tld/blogcounter/image?image=red_s&blog_id=random_id
не требует волшебных преобразований URI, поэтому простейший proxy_pass
форма - это все, что требуется:
location /blogcounter {
proxy_pass http://widget.external-domain.tld;
proxy_set_header ...;
...
}
Обратите внимание, что нет конечных /
поскольку URI запроса передается в восходящем направлении без изменений.
Я установил местоположение на /blogcounter
поскольку я не знаю, в каких еще местах (если есть) находится ваш сервер.
Вы не указываете исходный URL для blogcounter.js
. Вышеупомянутый блок местоположения также будет отображать:
https://my-domain.tld/blogcounter.js
на исходный URL:
http://widget.external-domain.tld/blogcounter.js
Видеть этот документ для подробностей.