我想知道如何知道某个特定位置是否用于处理请求nginx.
例如:
# 1
location / {}
# 2
location ~ /[\w\-]+\.html {}
# 3
location ~ /\w+\.html {}
Run Code Online (Sandbox Code Playgroud)
我如何知道URI /mysite是否由第三位而不是第二位处理?我倾向于使用add_header这个问题:
location / {
add_header location 1;
}
location ~ /(\w+\-)\.html {
add_header location 2;
}
location @named {
add_header location named;
}
Run Code Online (Sandbox Code Playgroud)
我想知道有更好的解决方案,或者您个人用于调试目的是什么?
Gra*_*ner 26
如果您只是想查看使用了哪个块,并且不关心返回其他有效结果,则可能更直接使用return而不是add_header.
location / {
return 200 'location 1';
}
location ~ /(\w+\-)\.html {
return 200 'location 2';
}
location @named {
return 200 'location named';
}
Run Code Online (Sandbox Code Playgroud)
Air*_*Air 14
关于这种方法的警告.我发现使用它location作为调试头Location是个坏主意,因为它是HTTP响应301使用的真实头.
所以,如果(在我测试中)你的测试中你最终得到了这个:
HTTP/1.1 301 Moved Permanently
...
Location: http://mydomain.com/banana/
location: banana
Run Code Online (Sandbox Code Playgroud)
然后你的浏览器会惊慌失措并报告Duplicate headers received from server.所以使用locationdebug或安全的东西.
add_header技巧是我如何做到的.
我现在正在工作,所以我无法测试,但你可能会在日志文件中得到一些东西,你将error_log级别设置为:
debug:你需要构建nginx才能使用--with-debug它,你可以使用nginx -V命令检查它notice:如果未启用调试日志记录| 归档时间: |
|
| 查看次数: |
14668 次 |
| 最近记录: |