NGINX 配置正規表示式位置

NGINX 配置正規表示式位置

我已經使用 Apache 的 Web 伺服器超過 15 年了,我想給新人一個機會。 ;) 為了簡潔起見,我一直在嘗試調整我的 NGINX 設定檔。

該網站通常會將所有流量重寫到特定的index.php,但我有兩個目錄privacy並且eula其中包含單獨的index.php,因此對於這兩個目錄,我希望它只調用目錄中的檔案。

例如:

location ~ /(privacy|eula) {
  try_files $uri $uri/ =404;
}

導致我的瀏覽器將頁面內容下載為 .dms 檔案。

如果我將位置分成兩部分,如下所示:

location /privacy {
  try_files $uri $uri/ =404;
}

location /eula {
  try_files $uri $uri/ =404;
}

它按預期工作。

我進行了搜索,也發現了這樣做的建議,但這具有相同的效果location ~ ^/(privacy|eula)。我是否必須接受 NGINX 非常冗長的事實,或者我做錯了什麼?

謝謝

答案1

正規表示式 location區塊按順序進行評估,直到找到匹配項。

在您的情況下,您已將其放置在區塊location ~ /(privacy|eula)上方location ~ \.php$,這樣 URI 這樣的 URI/eula/index.php就不會被正確的位置處理,而是會被下載。

放置location ~ /(privacy|eula)location ~ \.php$

這個文件了解詳情。

相關內容