#上圖是我根據nginx最長匹配原則配置的簡單範例, 目的是訪問/ 的時候全部拒絕, 但訪問/hello 的時候能進行正常跳轉. 但是返現, 訪問/hello 依舊403, 但是重寫日誌裡面記錄nginx確實匹配到了我的規則, 為何還是返回給我403呢? 求大神解惑, 不甚感激!
location / 可以配對到所有的請求
你可以如下修改
location = / { deny all; }
語法規則: location [=|~|~*|^~] /uri/ { … }= 開頭表示精確符合^~ 開頭表示uri以某個常規字串開頭,理解為符合 url路徑即可。 nginx不會對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。 ~ 開頭表示區分大小寫的正規匹配~* 開頭表示不區分大小寫的正則匹配!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配的正則/ 通用匹配,任何請求都會匹配到
因為rewrite之後的 /test00 匹配到了 location /
你應該加上一個 location ~ ^/test00 並開放存取權
location / 可以配對到所有的請求
你可以如下修改
語法規則: location [=|~|~*|^~] /uri/ { … }
= 開頭表示精確符合
^~ 開頭表示uri以某個常規字串開頭,理解為符合 url路徑即可。 nginx不會對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
~ 開頭表示區分大小寫的正規匹配
~* 開頭表示不區分大小寫的正則匹配
!~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配的正則
/ 通用匹配,任何請求都會匹配到
因為rewrite之後的 /test00 匹配到了 location /
你應該加上一個 location ~ ^/test00 並開放存取權