2013-03-30 13 views
15

Ich möchte das Fragezeichen "?" als regexp auf nginx.conf location.Wie wird das Fragezeichen "?" als regexp auf nginx.conf location

Zum Beispiel, ein URL-Muster, das ich übereinstimmen möchte, ist/etwas? Foo = 5 oder/etwas? Bar = 8 (Parameter nur änderbar).

Da nginx RCPE nimmt, kann ich den Standort auf nginx.conf schreiben wie folgt:

location ~ ^/something\?.* { 
} 

Die oben nicht das URL-Muster übereinstimmt. Wie kann ich das machen?

Auch das Folgende ist nicht meine Erwartung.

location ~ ^/something?.* { 
} 

Es wird übereinstimmen/something_foo_bar_buzz, die ich nicht erwarte.

Antwort

30

Der nginx-Standortblock stimmt überhaupt nicht mit der Abfragezeichenfolge überein. Also ist es unmöglich.

Lage

Diese Richtlinie ermöglicht es, verschiedene Konfigurationen auf dem URI abhängig.

In nginx gibt es eine eingebaute Variable $ uri, gegen die der Standortblock abgeglichen wird. Zum Beispiel

http://www.example.com/app/login.php?username=xyz&password=secret 

die $ uri Wert eine Anfrage geben, ist diese Zeichenfolge:

/app/login.php 

und die query_string in nginx Variable $ args gespeichert:

username=xyz&password=secret 

etwas WRT zu tun . Query-String, können Sie so etwas wie

if ($args ~ username=xyz) { 
    # do something for requests with this query string 
} 

Aber Vorsicht tun, IF is Evil

Verwandte Themen