場所の NGINX 構成正規表現

場所の NGINX 構成正規表現

15 年以上 Apache の Web サーバーを使用してきたので、新しいサーバーにチャンスを与えたいと思いました。;) 簡潔にするために NGINX 構成ファイルを調整しようとしています。

このサイトでは、通常、すべてのトラフィックを特定の に書き換えますindex.phpが、個別の を含む と のprivacy2つのディレクトリがあるため、これら 2 つのディレクトリについては、ディレクトリ内のファイルのみを呼び出すようにしたいと考えています。eulaindex.php

例えば:

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

ブラウザがページのコンテンツを .dms ファイルとしてダウンロードするようになります。

場所を次のように 2 つに分割します。

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 は/eula/index.php正しい場所で処理されず、代わりにダウンロードされます。

location ~ /(privacy|eula)ブロックを配置するブロックlocation ~ \.php$

見るこのドキュメント詳細については。

関連情報