关于nginx位置/ {}和位置= {}的优先级

时间:2017-11-25 07:56:12

标签: nginx

当我研究nginx位置配置时,我有一些问题。这是我的榜样。

文件结构如下: TEST1 / index.html的 TEST2 / index.html中

和nginx.conf位置部分如下所示:

    location = / {
            root test1;
            index index.html;
    #       deny all;
    }
    location  / {
        root test2;
        index  index.html;
    }

问题是,当我发出curl -v http://host/时,我得到了test2 / index.html的页面,但当我摆脱位置= / {}部分的#时, 结果将被禁止403。有谁能解释为什么?当location = same_uri {A}和位置same_uri {B}都在配置文件中时,哪个配置匹配[A或B]?非常感谢你。

http://nginx.org/en/docs/http/ngx_http_core_module.html#location

1 个答案:

答案 0 :(得分:1)

当您请求URI /时,nginx将处理两个请求。

第一个请求(对于URI /)由location = /块处理,因为它具有最高优先级。该块的功能是将请求更改为/index.html并重新开始搜索匹配的location块。

第二个请求(对于URI /index.html)由location /块处理,因为它匹配任何与更具体的location不匹配的URI。

因此最终响应来自第二个location块,但这两个块都参与评估访问。

请参阅this document了解location语法和index指令{/ 3}}。