我试图用nginx代理一个由外部主办的javascript和图片
我在https上运行我的网站,他们只通过http提供的文件,我已经有与他们有关的联系,但不能给时间线,当他们走了解决这一点。
所以没有我想在我的nginxconfigurationproxy_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; }
我想在我的网页上的小工具是。
<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因为我不知道您的服务器托pipe其他位置(如果有)。
您没有提及blogcounter.js的上游url。 上述位置块也将映射:
https://my-domain.tld/blogcounter.js
到上游的url:
http://widget.external-domain.tld/blogcounter.js
详情请参阅此文件 。