Nginx 反向代理到 Docker 502 错误网关

Nginx Reverse Proxy to Docker 502 Bad Gateway

在这上面花了整整一周的时间,并尝试了所有相关的 Whosebug post。感谢您的光临。

我有一个 Ubuntu VM 运行 nginx,反向代理指向不同端口上的各种 docker 守护进程并发 运行。我所有的静态网站都完美无缺。但是,我有一个容器 运行 一个 expressjs 应用程序。

我在重新启动服务器大约一个小时后收到响应。然后我得到 502 Bad Gateway。 刷​​新会使站点恢复大约 5 秒,直到它永久关闭。这是可重现的。

我的站点可用配置文件如下所示:

server {
   server_name example.com www.example.com;

   location / {
        proxy_pass http://127.0.0.1:8090;
        #proxy_set_header Host $host;
        #proxy_buffering off;
        #proxy_buffer_size 16k;
        #proxy_busy_buffers_size 24k;
        #proxy_buffers 64 4k;
   }
    listen 80;
    listen [::]:80;
    #listen 443 ssl; # managed by Certbot
    #ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem; # managed by Certbot
    #ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem; # managed by Certbot
    #include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    #ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

Nginx 错误日志显示:

2021/01/02 23:50:00 [error] 13901#13901: *46 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: ***.**.**.***, server: example.com, request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:8090/favicon.ico", host: "www.example.com", referrer: "http://www.example.com"

还有其他人有想法吗?

没有得到太多反馈,但我做了更多研究,现在问题已经稳定,所以我想 post 我的发现。

我已经确定了 docker 容器的问题。 Nginx 可以直接在 VM 上使用相同的应用 运行。

我将 docker 容器映像从 node:12-alpine 更新为 node:14-alpine。该站点已正常运行 42 小时。

如果再次随机失败,则可能是负载问题。

我希望这能解决某人的问题。

更新 2021-10-24

同样的问题开始了,我已将其缩小到我的 Ubuntu 版本上的端口 and/or docker。我可以推荐...

  • 更改端口
  • 正在重启您的电脑
  • 正在安装最新的 OS 和 docker 更新