【发布时间】:2020-01-07 15:23:05
【问题描述】:
当使用 Nginx +Passenger 组合运行 Ruby on Rails 应用程序时,当我尝试重新加载 Nginx 以更新其配置时出现以下错误。
“nginx -s reload”和“kill -HUP NGINX_PID”都会导致同样的错误。
2019/09/04 15:00:32 [error] 5247#0: *53603 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 8.8.8.8, server: example.com, request: "GET /example/ HTTP/1.1", upstream: "passenger:unix:/var/run/passenger-instreg/passenger.hDDqk0o/agents.s/core:", host: "example.com", referrer: "https://example.com/example2"
这似乎发生在乘客重新启动时。尽管它记录了以下消息:
age/Cor/CoreMain.cpp:1216 ]: Received command to shutdown gracefully. Waiting until all clients have disconnected...
看起来它没有在等待,当前请求被丢弃,导致 502 错误。
当我仅使用 tmp/restart.txt 重新启动应用程序时,不会发生此问题。只有当我需要重新加载 Nginx 配置时才会发生这种情况。
有没有办法在不丢弃当前乘客请求的情况下重新加载 Nginx 配置?
我正在使用 Nginx 1.14.0 运行乘客 5.3.7。
【问题讨论】: