Nginx 如何在反向代理上设置头以在自定义端口上通过http传递,但显示https和端口443

Nginx 如何在反向代理上设置头以在自定义端口上通过http传递,但显示https和端口443,nginx,nginx-reverse-proxy,Nginx,Nginx Reverse Proxy,我使用NGINX作为反向代理来连接到Windows服务器中托管的应用程序。 上游流量的连接路径类似于: 在端口443上通过https反向代理的浏览器 通过ip 10.1.0.10端口8080上的http反向代理到Windows app server nginx中的相关配置如下: server { server_name example.com; listen 443 ssl http2; location / { return 301 https:/

我使用NGINX作为反向代理来连接到Windows服务器中托管的应用程序。 上游流量的连接路径类似于:

  • 在端口443上通过https反向代理的浏览器
  • 通过ip 10.1.0.10端口8080上的http反向代理到Windows app server
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;
    }
}
我可以看到对的请求最初到达服务器。问题是,后续请求正在尝试访问URL

看起来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以在头文件中使用(端口443)时将传入流量传递给?

听起来您的后端正在使用完整URL重定向客户端-您可能需要使用正则表达式从
位置
头文件中删除端口,尽管我同意NGINX应该自动执行此操作。是的。问题不是NGINX配置,而是后端!