Windows Server 2012配置NGINX代理NodeJS站点80端口报404问题
NGINX反向代理Node应用返回404修复方案
核心故障原因
你当前配置中http块下的基础运行配置全部被注释,是导致转发异常的首要原因。缺失mime.types引入、基础传输配置的情况下,NGINX无法正常处理代理响应,同时Windows环境下的解析、配置加载逻辑问题也会触发404。
排查前先在服务器本地直接访问
http://127.0.0.1:9000,确认Node应用本身可正常响应,排除应用自身故障。
修复步骤
- 替换现有
nginx.conf配置为以下内容,取消基础配置的注释,同时调整适配Windows环境和SSO场景的参数:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name _; location / { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_pass http://127.0.0.1:9000/; proxy_read_timeout 240s; } } }
- 配置调整说明:
- 恢复
http块下被注释的基础配置,保证NGINX可以正常识别响应类型、处理代理转发逻辑 - 将
proxy_pass中的localhost改为127.0.0.1,规避Windows系统IPv6解析优先级问题导致的转发失败 - 将
Host请求头取值改为$host,避免携带端口信息导致SSO回调域名校验失败
- 恢复
- 正确重载配置(Windows环境禁止直接双击nginx.exe启动/重载):
- 打开命令提示符,进入NGINX安装的根目录
- 执行
nginx.exe -t命令校验配置语法,命令输出会显示当前加载的配置文件路径,确认是你修改的文件且语法校验通过 - 校验通过后执行
nginx.exe -s reload重载配置,如果是首次启动直接执行nginx.exe即可
额外排查点
如果重载后仍然返回NGINX默认404页面,先执行tasklist | findstr nginx.exe查看系统中是否运行了多个NGINX进程,全部结束后重新启动即可。
内容的提问来源于stack exchange,提问作者Geoff
相关产品推荐
相关产品推荐

