我想知道我怎么知道,如果一个特定的位置,[S]用于处理请求nginx
。
例如:
# 1
location / {}
# 2
location ~ /[\w\-]+\.html {}
# 3
location ~ /\w+\.html {}
我怎么知道,如果像URI /mysite
是第三个位置,而不是第二个处理? 我倾向于使用add_header
这件事:
location / {
add_header location 1;
}
location ~ /(\w+\-)\.html {
add_header location 2;
}
location @named {
add_header location named;
}
我想知道有没有更好的解决方案或你怎么亲自进行调试?
该add_header诀窍是我会怎么做。
我的工作是正确的了,所以我无法测试,但你有可能会得到我,你设定的日志文件什么error_log
水平:
-
debug
:你的nginx需要使用内置--with-debug
这个工作,你可以检查与nginx -V
命令 -
notice
:如果未启用调试日志记录
如果你只是想看看用哪个块,并不在乎返回,否则有效的结果,它可能是更直接的使用return
,而不是add_header
。
location / {
return 200 'location 1';
}
location ~ /(\w+\-)\.html {
return 200 'location 2';
}
location @named {
return 200 'location named';
}
这种方法的一个警告。 我发现这是一个坏主意,使用location
作为调试头,因为Location
是通过HTTP响应301使用真正的头。
所以,如果你测试你结束了这个(像我一样):
HTTP/1.1 301 Moved Permanently
...
Location: http://mydomain.com/banana/
location: banana
那么你的浏览器将怪胎和报告Duplicate headers received from server
。 因此,使用locationdebug
什么是安全的。
文章来源: nginx. Test which location used to process request