在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
在使用nginx配置rewrite中经常会遇到有的地方用last并不能工作,换成break就可以,其中的原理是对于根目录的理解有所区别,按我的测试结果大致是这样的。 location / { proxy_pass http://test; alias /home/html/; root /home/html; rewrite "^/a/(.*)\.html$" /1.html last; } 在location / { 配置里: location / { root /home/html; } location /a/ { proxy_pass http://test; rewrite "^/a/(.*)\.html$" /1.html last; } 在这段配置里,使用last访问是可以访问到东西的,不过,它出来的结果是:/home/html/1.html;可我需要的是http://test/1.html?使用break就可以了。 location / { root /home/html; } location /a/ { proxy_pass http://test; rewrite "^/a/(.*)\.html$" /a/1.html last; } 在这段配置里,返回错误,因为last会重新发起请求匹配,所以造成了一个死循环,使用break就可以访问到http://test/a/1.html。 所以我们再来理解last与break的区别: server { listen 80 default_server; server_name dcshi.com; root www; location /break/ { rewrite ^/break/(.*) /test/$1 break; echo "break page"; } location /last/ { rewrite ^/last/(.*) /test/$1 last; echo "last page"; } location /test/ { echo "test page"; } }
请求:http://dcshi.com/break/*** |
请发表评论