Nginx中break與last的區別詳析
先說區別
- last,重寫後的規則,會繼續用重寫後的值去匹配下面的location。
- break,重寫後的規則,不會去匹配下面的location。使用新的規則,直接發起一次http請求瞭。
Nginx 配置文件
server { listen 88; server_name _; location /break { # location 1 rewrite ^/break/(.*)$ /bak/$1 break; } location /last { # location 2 rewrite ^/last/(.*)$ /bak/$1 last; } location /bak { # location 3 default_type text/html; return 200 $uri; } }
訪問 http://rumenz.com:88/break/one
命中location1,瀏覽器地址欄沒有變,直接去找 /nginx/html/bak/one 文件,由於沒有這個文件所以返回404。
瀏覽器
Nginx錯誤(error.log)日志
/nginx/html/bak/one failed (2: No such file or directory)
break 表示重寫後停止不再匹配 location 塊。
訪問 http://rumenz.com:88/last/one
命中location2,瀏覽器地址欄沒有變,重新匹配到 location3
last表示重寫後跳到location塊再次用重寫後的地址匹配
break 和 last 的使用場景
break
文件下載,隱藏保護真實文件服務器。
location /down { rewrite ^/down/(.*)$ https://rumenz.com/file/$1 break; }
last
接口地址改寫,將 https://rumenz.com/api/list 改寫成 https://rumenz.com/newapi/list
location /api { rewrite ^/api/(.*)$ /newapi/$1 last; } location /newapi { default_type Application/json; return 200 '{"code":200,"msg":"ok","data":["JSON.IM","json格式化"]}'; }
總結
到此這篇關於Nginx中break與last區別的文章就介紹到這瞭,更多相關Nginx中break與last區別內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!