如何解决如何在反向代理上设置标头以通过自定义端口上的 http 但显示 https 和端口 443
我使用 NGINX 作为反向代理来连接到托管在 Windows Server 中的应用程序。 上游流量的连接路径类似于:
- 浏览器在端口 443 上通过 https 进行反向代理
- 通过 ip 10.1.0.10 端口 8080 上的 http 反向代理到 Windows 应用服务器
nginx中的相关配置如下:
server {
server_name example.com;
listen 443 ssl http2;
location / {
return 301 https://$host/app;
}
location ~ ^/app {
add_header X-Frame-Options SAMEORIGIN always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains;" always;
add_header X-Content-Type-Options nosniff always;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_intercept_errors on;
proxy_pass http://10.1.0.10:8080;
}
}
我可以看到对 https://example.com/app 的请求最初到达服务器。问题是,后续请求会尝试访问 URL http://example.com:8080/app。
看起来 proxy_set_header 主机按预期工作(即用 example.com 替换 IP 地址 10.1.0.10),但协议和端口号没有改变。
我尝试添加以下指令:
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Port $server_port;
但没有运气。
如何将 NGINX 配置为在标头中使用 http://10.1.0.10:8080(端口 443)时将传入流量传递到 https://example.com?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。