外部托管的Nginx代理图像/ javascript

我正在尝试使用nginx代理由外部方托管的javascript和图像

我在https上运行我的网站,他们只通过http提供文件,我已经与他们联系过这个问题,但是当他们解决这个问题时无法给出时间表.

所以,我没有尝试在我的nginx配置中使用proxy_pass这些文件,我有以下位置块

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;
}

我想要在我的页面上的小部件是.

所以我希望客户端请求通过我的服务器,该服务器具有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的上游URL.上面的位置块也将映射:

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

到上游网址:

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

有关详情,请参见this document.

dawei

【声明】:淮南站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。