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

Ubuntu服务器Nginx配置双Nuxt.js域名遇502 Bad Gateway错误排查

排查Nginx 502 Bad Gateway错误(多域名反向代理场景)

基础配置检查

  • 验证Nginx配置语法:执行nginx -t,若输出syntax is ok和test is successful则语法正常,否则根据提示修复语法问题(如括号不匹配、引号格式错误)。
  • 确保配置生效:Nginx默认仅加载/etc/nginx/sites-enabled/目录下的配置,需确认/etc/nginx/sites-available/default已创建软链接到该目录,执行命令:
    ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/default
    
    完成后重启Nginx:systemctl restart nginx

反向代理配置优化与验证

  • 测试后端服务可达性:在服务器本地执行curl http://127.0.0.1:8080和curl http://127.0.0.1:3000,若无法返回正常内容,说明后端服务监听地址可能不是127.0.0.1(如绑定了外网IP),需修改项目监听配置为0.0.0.0或127.0.0.1。
  • 规范WebSocket代理配置:原配置中proxy_set_header Connection 'upgrade'写法不够严谨,建议在http块中添加映射规则(若尚未添加),动态适配Connection头:
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    
    随后将每个server块中的proxy_set_header Connection 'upgrade';替换为:
    proxy_set_header Connection $connection_upgrade;
    
    该配置能兼容非WebSocket请求场景,避免不必要的连接异常。
  • 补充代理头信息:添加两个头字段帮助后端获取真实客户端IP,优化服务兼容性:
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    

权限与进程状态排查

  • 确认后端服务运行状态:用pm2 list查看两个项目的进程状态,确保8080、3000端口被正常占用且进程处于online状态。
  • SELinux/防火墙检查:若为RHEL/CentOS系列服务器,临时关闭SELinux测试:setenforce 0,若错误消失,执行setsebool -P httpd_can_network_connect 1永久开放Nginx网络连接权限;Debian/Ubuntu系列无需关注SELinux,本地回环端口一般不受防火墙拦截。

日志定位精准问题

查看Nginx错误日志获取具体报错原因:

tail -f /var/log/nginx/error.log

访问域名时观察日志,例如Connection refused说明后端服务未监听目标端口,No route to host表示网络连通性存在问题,根据日志提示针对性修复。

修正后的完整配置示例

# 在http块中添加(位于所有server块之外)
map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 80;
    server_name domain1.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    server_name domain2.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:07:07