Nginx

外部託管的 Nginx 代理圖像/javascript

  • December 23, 2015

我正在嘗試使用 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&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因為我不知道您的伺服器託管的其他位置(如果有的話)。

您沒有提及blogcounter.js. 上面的位置塊也將映射:

https://my-domain.tld/blogcounter.js

到上游 URL:

http://widget.external-domain.tld/blogcounter.js

有關詳細資訊,請參閱此文件

引用自:https://serverfault.com/questions/744815