Nginx反向代理子域名配置失效问题排查求助
问题排查与修复方案
核心问题定位
api.test.com的配置存在路径匹配逻辑错误,同时需按顺序排查基础运行环节:
1. 验证Nginx配置语法
先执行配置测试命令,确认无语法错误:
sudo nginx -t
若提示test is successful则配置语法正常;若报错,根据提示修正(如括号不闭合、指令拼写错误)。
2. 修正api.test.com的代理路径
当前配置仅在访问api.test.com/app_api_location时才会代理到3001端口,但你需要的是整个域名映射到3001,因此修改location块:
server { listen 80; server_name api.test.com; # 若应用无静态资源需求,可注释root和index配置 # root /var/www/html/api; # index index.html index.htm; location / { proxy_pass http://localhost:3001; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }
3. 确认Node应用正常运行
在服务器上直接测试Node应用的可访问性:
curl http://localhost:3000 curl http://localhost:3001
若返回应用正常响应(如JSON数据或页面内容),说明应用本身无问题;若提示Connection refused,检查Node应用是否启动、端口监听是否正确。
4. 检查DNS解析/本地Hosts配置
- 公网服务器:确认
test.com和api.test.com的DNS记录已指向服务器公网IP。 - 本地测试:在你的本地机器(非服务器)
hosts文件中添加以下内容(替换你的服务器IP为实际IP):你的服务器IP test.com 你的服务器IP api.test.com
5. 检查防火墙端口开放
Ubuntu 22.04默认使用ufw防火墙,确认80端口已开放:
sudo ufw status
若80端口不在允许列表,执行:
sudo ufw allow 80/tcp
6. 重启Nginx使配置生效
修改配置后必须重启Nginx:
sudo systemctl restart nginx
7. 查看Nginx日志排查细节
若仍有问题,通过日志定位具体故障:
sudo tail -f /var/log/nginx/error.log sudo tail -f /var/log/nginx/access.log
错误日志会提示具体问题(如连接Node应用失败、权限不足等),访问日志可查看请求是否到达Nginx、匹配了哪个server块。
内容的提问来源于stack exchange,提问作者Aayush
相关产品推荐
相关产品推荐

