首頁  >  問答  >  主體

不解的nginx rewrite規則

#上圖是我根據nginx最長匹配原則配置的簡單範例, 目的是訪問/ 的時候全部拒絕, 但訪問/hello 的時候能進行正常跳轉. 但是返現, 訪問/hello 依舊403, 但是重寫日誌裡面記錄nginx確實匹配到了我的規則, 為何還是返回給我403呢? 求大神解惑, 不甚感激!

習慣沉默習慣沉默2723 天前859

全部回覆(2)我來回復

  • 怪我咯

    怪我咯2017-05-27 17:47:03

    location / 可以配對到所有的請求

    你可以如下修改

     location = / {
        deny all;
     }

    語法規則: location [=|~|~*|^~] /uri/ { … }
    = 開頭表示精確符合
    ^~ 開頭表示uri以某個常規字串開頭,理解為符合 url路徑即可。 nginx不會對url做編碼,因此請求為/static/20%/aa,可以被規則^~ /static/ /aa匹配到(注意是空格)。
    ~ 開頭表示區分大小寫的正規匹配
    ~* 開頭表示不區分大小寫的正則匹配
    !~和!~*分別為區分大小寫不匹配及不區分大小寫不匹配的正則
    / 通用匹配,任何請求都會匹配到

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-27 17:47:03

    因為rewrite之後的 /test00 匹配到了 location /

    你應該加上一個 location ~ ^/test00 並開放存取權

    回覆
    0
  • 取消回覆