You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用proxy_pass子目录转发请求至Node服务器时Nginx端口被覆盖问题

问题分析与解决方案

你的问题核心是Nginx反向代理HTTPS请求到HTTP的Node服务时,Node服务无法感知原始请求的HTTPS协议,导致响应内容中可能包含HTTP协议的链接,或客户端请求出现协议不匹配的错误。同时当前的proxy_redirect设置也可能导致重定向地址不正确。

需要在location /pat/块中补充以下配置:

  • 添加X-Forwarded-Proto头,告知Node服务原始请求使用的是HTTPS协议
  • 调整proxy_redirect配置,修正Node服务返回的重定向地址

修改后的location /pat/配置如下:

location /pat/ {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Proto $scheme; # 新增:传递原始请求协议
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:3000;
    # 替换原proxy_redirect off,修正重定向地址
    proxy_redirect http://127.0.0.1:3000/ https://$host/pat/;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

另外建议移除ssl on;指令,因为listen 443 ssl;已经开启了SSL功能,重复设置可能引发不必要的问题。

关键说明

  • X-Forwarded-Proto $scheme:$scheme会自动获取当前请求的协议(HTTPS),Node服务可通过这个头判断原始请求的协议,从而返回正确的HTTPS链接或响应
  • proxy_redirect:当Node服务返回的重定向地址是http://127.0.0.1:3000/xxx时,Nginx会自动替换为https://local.tjrhodes.com/pat/xxx,确保客户端跳转地址为正确的HTTPS地址

修改完成后,重启Nginx服务生效:

sudo nginx -s reload

内容的提问来源于stack exchange,提问作者Tom Rhodes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 05:09:50