NGINX-Konfigurations-Regex im Standort

NGINX-Konfigurations-Regex im Standort

Nachdem ich seit über 15 Jahren den Apache-Webserver verwende, wollte ich dem Neuling eine Chance geben. ;) Ich habe versucht, meine NGINX-Konfigurationsdateien der Kürze halber zu optimieren.

Die Site schreibt den gesamten Datenverkehr im Allgemeinen in ein bestimmtes um index.php, ich habe jedoch zwei Verzeichnisse privacyund , euladie einzelne s enthalten index.php. Daher möchte ich, dass für diese beiden Verzeichnisse nur die Dateien in den Verzeichnissen aufgerufen werden.

Zum Beispiel:

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

bewirkt, dass mein Browser den Seiteninhalt als .dms-Datei herunterlädt.

Wenn ich den Standort wie folgt in zwei Teile aufteile:

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

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

Es funktioniert wie vorgesehen.

Ich habe gesucht und auch den Vorschlag gefunden, es so zu machen, aber das hatte den gleichen Effekt location ~ ^/(privacy|eula). Muss ich einfach damit leben, dass NGINX sehr wortreich ist, oder was mache ich falsch?

Danke

Antwort1

Derregulären Ausdruck locationBlöcke werden der Reihe nach ausgewertet, bis eine Übereinstimmung gefunden wird.

In Deinem Fall hast Du location ~ /(privacy|eula)den location ~ \.php$Block so platziert, dass eine URI wie diese /eula/index.phpnicht von der richtigen Stelle verarbeitet wird und stattdessen heruntergeladen wird.

Platzieren Sie den location ~ /(privacy|eula)Blocknachder location ~ \.php$Block.

Sehendieses Dokumentfür Details.

verwandte Informationen