Debugging nginx。测试用于处理请求的位置
我想知道如何知道某个特定位置是否用于处理Debugging nginx。测试用于处理请求的位置,debugging,nginx,Debugging,Nginx,我想知道如何知道某个特定位置是否用于处理nginx中的请求 例如: 我如何知道像/mysite这样的URI是否由第三个位置而不是第二个位置处理? 我倾向于在这个问题上使用: location / { add_header location 1; } location ~ /(\w+\-)\.html { add_header location 2; } location @named { add_header location named; } 我想知道有没
nginx
中的请求
例如:
我如何知道像/mysite
这样的URI是否由第三个位置而不是第二个位置处理?
我倾向于在这个问题上使用:
location / {
add_header location 1;
}
location ~ /(\w+\-)\.html {
add_header location 2;
}
location @named {
add_header location named;
}
我想知道有没有更好的解决方案,或者您个人在调试时使用了什么方法?添加头技巧是我将如何做到的 我现在正在工作,所以我无法测试,但是如果将
错误日志设置为级别,您可能会在日志文件中得到一些信息:
debug
:您的nginx需要使用--使用debug
构建。要使其正常工作,您可以使用nginx-V
命令进行检查
注意
:如果未启用调试日志记录
这是一个警告。我发现使用location
作为调试头是个坏主意,因为location
是HTTP响应301使用的真实头
因此,如果(像我一样)在你的测试中,你最终得到以下结果:
HTTP/1.1 301 Moved Permanently
...
Location: http://mydomain.com/banana/
location: banana
然后,您的浏览器将崩溃,并报告从服务器收到的重复头。因此,请使用locationdebug
或安全的方法。如果您只想查看使用了哪个块,而不关心返回其他有效结果,那么使用return
可能比使用add_header
更直接
location / {
return 200 'location 1';
}
location ~ /(\w+\-)\.html {
return 200 'location 2';
}
location @named {
return 200 'location named';
}
这仅在HTTP响应代码为200、204、301、302或304时添加标头。因此,它不会帮助您跟踪404s::对于后来的人来说:在nginx 1.7.5之后的版本(在Air发表评论几个月后发布)中,您可以在add_header
中添加一个always
参数,该参数将指示nginx始终添加404s,而不管状态代码如何。香蕉和柠檬比foo&bar更好:-)这是我见过的关于测试URI的最好答案。这真是一种很酷的方式。我有一个奇怪的问题,几乎没有一个位置工作。使用这个我在任何时候都能找到它。add_header
技巧在您最想调试的环境中都不起作用:它不适用于4xx响应。
location / {
return 200 'location 1';
}
location ~ /(\w+\-)\.html {
return 200 'location 2';
}
location @named {
return 200 'location named';
}