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

Docker部署Nginx时部分子域名随机出现502错误求助

排查随机子域名502 Bad Gateway问题的步骤

Cloudflare相关排查

  • 临时切换子域名解析模式:将出现问题的子域名设置为DNS only(绕过Cloudflare代理),观察是否仍出现502。如果消失,说明问题出在Cloudflare侧。
  • 检查回源配置:确认Cloudflare的回源超时时间(默认10秒)是否适配你的NextJS应用响应速度,可适当调高至15-20秒。同时用ss -tanp | grep 443(假设用443端口)查看VPS上的TCP连接状态,是否存在大量TIME_WAIT或ESTABLISHED连接导致资源耗尽。
  • 验证SSL/TLS匹配:确保Cloudflare的SSL模式(如「严格」)与Nginx的SSL配置一致。若CF用严格模式,但Nginx的证书未覆盖子域名,会导致握手失败,CF直接返回502且Nginx无日志记录。

Docker与Nginx层面排查

  • 排查容器DNS解析:将Nginx反向代理的NextJS地址从容器名改为容器IP(比如http://172.17.0.3:3000),测试是否还出现随机502。若问题消失,说明Docker内置DNS偶尔解析失败,可考虑在docker-compose中固定容器IP或配置自定义DNS。
  • 调整Nginx资源限制:检查Nginx配置中的worker_processes(建议设为CPU核心数)和worker_connections(默认1024,可调高至4096),避免连接池耗尽。临时开启Nginx的debug日志:
    error_log /var/log/nginx/error.log debug;
    
    重新加载配置后,观察是否有隐藏的连接错误日志。
  • 监控容器资源:用docker stats实时查看NextJS和Nginx容器的CPU、内存使用率,若出现502时容器资源占满,说明是资源限制导致的无响应,需调整容器的--cpus、--memory参数。

NextJS多租户逻辑排查

  • 添加租户级日志:在NextJS的入口或租户中间件中,针对每个子域名请求记录详细日志,包括租户初始化、数据库连接、缓存操作等步骤,排查是否存在特定租户的初始化异常(如数据库连接失败、缓存键冲突)。
  • 检查NextJS进程状态:查看NextJS容器日志docker logs <nextjs-container-id>,过滤出出现502的子域名请求,确认是否有进程崩溃、未捕获异常等记录。

VPS系统层面排查

  • 检查防火墙规则:查看iptables日志(tail -f /var/log/iptables.log)和fail2ban日志(tail -f /var/log/fail2ban.log),确认是否存在误拦截部分子域名请求的情况。
  • 监控系统资源:在出现502时,用top查看CPU、内存占用,iostat查看磁盘IO情况,确认是否因系统资源耗尽导致服务无响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:33