几周前,我尝试使用proxy_pass
代理来显示一个不是https在我的页面中使用iframe
。
它运行良好,我只是尝试设置另一个代理服务器,但它不起作用。
会议:
server {
listen 443 ssl;
server_name my.com;
ssl_certificate /server.pem;
ssl_certificate_key /server.key;
root html;
index index.html index.htm;
...
location /proxy/ {
proxy_pass http://other.com/;
}
}
我访问了这个网页http://other.com/mobile.html,而且似乎效果不错,但是https://my.com/proxy/mobile.html出错了,页面如下:
HTTP Status 404 - /somefolder/mobile.html
我想http://other.com服务器也使用代理,所以我无法获取真实网页?有人知道发生了什么吗?请给我一些建议以避免这种情况。
任何帮助都将不胜感激!谢谢。
答案1
感谢@TeroKilkanen 的提醒,我意识到我的 Nginx 错过了一些对我来说非常重要的标头other.com
。
我尝试比较这些网页的响应标头,我想我明白为什么会发生这种情况。
看来服务器正在other.com
使用Spring
框架,SpringApplicationContextHeaderFilter
添加了一个X-Application-Context
包含ApplicationContext ID的标头。所以这个标头非常重要,所以我尝试将其添加到Nginx配置文件中:
location /proxy/ {
proxy_set_header X-Application-Context ..99;
proxy_pass http://other.com/;
}
它立即见效。再次感谢。