Nginx

nginx總結類似的目錄路徑

  • November 27, 2020

我一直在嘗試使用我的 nginx 設置來阻止對任何不需要的目錄的訪問,但是每次添加一些目錄時添加幾行新行對我來說真的很煩人。我一直在看幾個論壇,但所陳述的語法似乎都不起作用。我已經嘗試過 syntax ^~ /(dir|dir2)/,^~ (/dir|/dir2)/^~ (/dir/|/dir2/),但就像我說的那樣,這些都不起作用,唯一的解決方案似乎是限制每個目錄,這看起來真的很糟糕恕我直言。

如果您了解任何可能在這種情況下起作用的語法,我將非常感謝任何形式的回答。

作業系統:Debian GNU/Linux 10 (buster) nginx 版本:nginx/1.14.2

location ^~ /includes/ {
       deny all;
       return 403;
       }
   location ^~ /vendor/ {
       deny all;
       return 403;
       }
   location ^~ /packages/ {
       deny all;
       return 403;
       }
   location ^~ /res/ {
       deny all;
       return 403;
       }
   location ^~ /styles/ {
       deny all;
       return 403;
       }

^~意味著 nginx 將始終使用前綴匹配,而不檢查正則表達式。

要使用正則表達式進行匹配,您需要使用:

location ~ ^/(?:includes|vendor|packages|res|styles)/ {
  • ~告訴 nginx 這是一個正則表達式
  • ^匹配請求字元串的開頭
  • /匹配 URI 開始斜杠
  • ()通常聲明一個擷取組。但是,?:阻止擷取
  • |在組內用作“或”。

引用自:https://serverfault.com/questions/1044182