为啥 nginx 会忽略位置上下文中的 proxy_read_timeout?

Posted

技术标签:

【中文标题】为啥 nginx 会忽略位置上下文中的 proxy_read_timeout?【英文标题】:Why may nginx ignore proxy_read_timeout inside location context?为什么 nginx 会忽略位置上下文中的 proxy_read_timeout? 【发布时间】:2018-07-04 18:46:57 【问题描述】:

配置如下:

server 
    ...
    proxy_read_timeout 45s;
    ...

    location /admin 
        proxy_pass http://ADMIN_APP_IP:8000;
    

    location /admin/analytics 
        proxy_read_timeout 900s;
    

由于某种原因,当我在location /admin/analytics 中向https://mystageaddr.com/admin/analytics/ proxy_read_timeout 发送请求时似乎被忽略了,因为在45s 之后nginx 返回504 错误。如果我在服务器上下文中更改 proxy_read_timeout 值,一切正常。

文档说应该可以在location http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_read_timeout 中使用proxy_read_timeout,也许我错过了什么?

【问题讨论】:

【参考方案1】:

这是我的错,我忘记了 nginx 位置优先级 (Nginx location priority),我的配置中有一个具有更高优先级的正则表达式。

【讨论】:

以上是关于为啥 nginx 会忽略位置上下文中的 proxy_read_timeout?的主要内容,如果未能解决你的问题,请参考以下文章

nginx启动忽略dns解析

nginx 反向代理后为啥访问php文件 会提示404

nginx proxy_next_upstream模块 重复提交问题

ngx_http_proxy_module 中的常用超时指令

使用 jenkins 为 nginx 增加上下文

Nginx 每个位置/将重写的 uri 传递给 proxy_pass