nginx: Regex-Übereinstimmung bei ungleich?

nginx: Regex-Übereinstimmung bei ungleich?

gibt es ein "nicht"-Äquivalent für Nginx-Matches? Ich denke

location !~ "\.(html|php)$" {
    deny all;
}

um nur die Bereitstellung von HTML- und PHP-Dateien zuzulassen. Die Alternative ist „alles verweigern“, gefolgt von einem ~ mit „alles zulassen“. Leider scheint dies irgendwie mit einer früheren Standortmagie in meiner Nginx-Datei zu kollidieren.

Antwort1

Sie können verschachtelte Standortlogik wie folgt verwenden:

location / {
  deny all;
  location ~* "\.(html|php)$" {
    Allow all;
  }
}

Antwort2

Regexped-Standorte stimmen auch in ihrer Reihenfolge überein. Sie könnten also auch so etwas verwenden:

location ~* "\.(html|php)$" { ...; break; } location ~* "." { deny all; }

Beachten Sie, dass der zweite Standort ebenfalls auf regulären Ausdrücken basieren muss.

verwandte Informationen