Nginx
外部託管的 Nginx 代理圖像/javascript
我正在嘗試使用 nginx 代理由外部方託管的 javascript 和圖像
我在 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
因為我不知道您的伺服器託管的其他位置(如果有的話)。您沒有提及
blogcounter.js
. 上面的位置塊也將映射:https://my-domain.tld/blogcounter.js
到上游 URL:
http://widget.external-domain.tld/blogcounter.js
有關詳細資訊,請參閱此文件。