我的请求流程如下所示Client -> AWS ELB -> Nginx -> Backend。
后端响应某些请求需要很长时间,所以proxy_read_timeout设置为5分钟。但是,nginx 默认keepAliveTimeout为 70 秒,AWS ELBidleTimeout为 6 分钟。
AWS文档说要保持AWS的idleTimeout小于后端的keeplalive超时,在我的例子中是70秒。nginx 默认keepAliveTimeout值在哪里?
在这个特定场景中,nginx 是ELB 的后端。因此,nginx 的keepalive_timeout下游连接时间应该大于 6 分钟。但是,请确保在正确的 nginx 配置上下文中设置keepalive_timeout,因为实际上有两个名为 的不同配置keepalive_timeout。
在 Nginx 中:
keepalive_timeout在http、server、 或location上下文中设置表示下游连接的超时。在你的例子中,它是 nginx 到 ELB 的连接。
keepalive_timeout在上下文中设置upstream意味着与上游(即您的实际后端)服务器的空闲保持活动连接将保持打开状态的超时时间。这个旋钮在 ELB 术语中称为“idleTimeout”。
请注意,让idleTimeout大于后端的keepalive超时的相同建议也适用于您的nginx本身。有关更多详细信息,请参阅图形解释或阅读我的文章,了解错误配置的超时如何导致意外的 HTTP 502 :
| 归档时间: |
|
| 查看次数: |
4015 次 |
| 最近记录: |