如何让 Nginx 反向代理等待上游上线?

如何让 Nginx 反向代理等待上游上线?

我有一个在 UNIX 套接字上监听的服务器应用程序,以及作为反向代理的 Nginx。

现在,我希望 Nginx 等到我的应用程序上线,例如当我部署更新并重新启动它时,不向客户端返回任何错误。

这是我的 Nginx 配置中的内容:

location / {
#   proxy_pass http://localhost:8080;
    proxy_pass http://unix:/tmp/MyApp.sock;
    proxy_set_header Host $http_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;

    proxy_connect_timeout 60;
    proxy_send_timeout 60;
    proxy_read_timeout 60;
}

然而,每当我的应用程序宕机时,Nginx 都会返回502 Bad Gateway 立即地。显然所有proxy_*_timeout设置都无济于事。

本地 TCP 套接字也会发生同样的情况。使用 UNIX 套接字时,当我关闭应用程序时,我会确保删除套接字文件,以便 Nginx 可以看到没有应用程序正在运行。

我怎样才能告诉它实际等待一段时间直到套接字可用?

答案1

代理超时是套接字的超时,但如果套接字无法建立,则它们没有区别。我认为您想要的功能是 NginX Plus 中提供的额外功能。那是一款付费软件。

相关内容