Назад | Перейти на главную страницу

Изображение прокси-сервера Nginx / javascript, размещенное на внешнем сервере

Я пытаюсь проксировать 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&timestamp=' + 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

Видеть этот документ для подробностей.