当我研究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
答案 0 :(得分:1)
当您请求URI /
时,nginx
将处理两个请求。
第一个请求(对于URI /
)由location = /
块处理,因为它具有最高优先级。该块的功能是将请求更改为/index.html
并重新开始搜索匹配的location
块。
第二个请求(对于URI /index.html
)由location /
块处理,因为它匹配任何与更具体的location
不匹配的URI。
因此最终响应来自第二个location
块,但这两个块都参与评估访问。
请参阅this document了解location
语法和index
指令{/ 3}}。