Nginx proxy_pass 意外结果

Nginx proxy_pass 意外结果

几周前,我尝试使用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/;
}

它立即见效。再次感谢。

相关内容