我有一个在 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 中提供的额外功能。那是一款付费软件。