Nginx反向代理配置后无法通过server_name访问服务问题排查
MERN应用Nginx反向代理无法访问的问题排查与解决
1. 核心问题:访问方式错误
你用127.0.0.1:douban的格式完全不对,server_name是用来匹配HTTP请求头中的Host字段的,不是端口或URL路径的一部分。正确操作如下:
- 修改本地hosts文件:
- Linux/macOS:编辑
/etc/hosts,添加一行127.0.0.1 douban - Windows:编辑
C:\Windows\System32\drivers\etc\hosts,添加同样内容
- Linux/macOS:编辑
- 之后直接在浏览器输入
http://douban即可访问(Nginx监听80端口,HTTP默认端口可省略)
2. 验证反向代理是否正常工作的步骤
- 确认Node服务在4000端口运行:
- Linux/macOS执行
netstat -tulpn | grep 4000 - Windows执行
netstat -ano | findstr :4000
查看是否有Node进程占用4000端口
- Linux/macOS执行
- 直接访问
http://127.0.0.1:4000,确认后端服务本身能正常响应请求 - 检查Nginx日志:
- 实时查看访问日志:
tail -f /var/log/nginx/access.log - 查看错误日志:
tail -f /var/log/nginx/error.log
访问http://douban时,观察日志是否有请求记录或报错信息
- 实时查看访问日志:
3. 额外配置检查点
- 避免server块被覆盖:可以给当前server块加上
default_server标记,确保优先匹配:server{ listen 80 default_server; server_name douban; # 其余配置不变 } - 你的proxy头部配置已经覆盖了WebSocket和常规HTTP请求的需求,无需调整
内容的提问来源于stack exchange,提问作者Mysterious_Rabbit
相关产品推荐
相关产品推荐

