Nginx如果rewrite写了很多条,很容易发现rewrite写的没问题,可是就是匹配不了,很可能已匹配到其它rewrite中去了。打开rewrite的log,可以清晰的看到其匹配的先后顺序,和那一条匹配了。


方法:


1:在http段加入如下:

rewrite_log on;

error_log /tmp/xxxerror.log notice;


注意两点:1)在http字段加,反正我试了一下,在配置文件的开始位置,nginx会报rewrite_log 是一个不识别的变量。


2)注意 error_log的级别是notice,否则不会显示其具体的匹配过程,但需要注意,最好在测试环境下调试,error_log会增长的很快,我们网站20分钟5G多,所以在线上调试完了,尽快关闭!!!或说改成error级别的。


tail /tmp/xxxerror.log notice:

2014/04/25 13:20:12 [notice] 29125#0: *10 "^/bbs/(.*)$" does not match "/bbs", client: 192.168.1.22, server: localhost, request: "GET /bbs HTTP/1.1", host: "192.168.1.123"


转载自http://www.kankanews.com/ICkengine/archives/2289.shtml