Was ist Nginx Position ~ * und ~

15

Ich versuche, Nginx ein wenig besser zu verstehen und eine Regex zu bilden, bei der jede URL, die NICHT übereinstimmt, /api/postdataV1an einen anderen Cluster von Servern weitergeleitet wird. Ich sehe diese beiden Dinge immer wieder an Beispielen ohne Erklärung

location ~ {some regex}

location ~* (some regex}

Meine erste Frage lautet: Was sind diese ~und ~*(ich denke, das ~heißt, ich spezifiziere einen regulären Ausdruck?), Aber wie steht es ~*dann?

Was ich denke, was ich will, ist das. Wäre das richtig?

location ~ ^/api/postdataV1$ {
    #matches to this route to where I want
}

location / {
    #This will be everything except /api/postdataV1 I think
}

Wäre das richtig? aber was ist mit ~*... ich verstehe das nicht

Danke, Dean

Dean Hiller
quelle
Das Wiki ist immer einen Blick wert.
Typ von dort
1
Ich hatte die Dokumente durchgesehen, fand aber nicht die richtigen Links und landete auf der Dokumentationsseite für "location", die eigentlich diese Informationen haben sollte, aber nicht. (Wiki, wie ich mich erinnere, verwies mich auf die Dokumentation als die aktuellste).
Dean Hiller
ich würde googeln nginx location, der erste schlag ist das :) aber ich muss zugeben, man muss sich an die nginx-dokumentation gewöhnen, esp. Finden Sie das richtige Zeug unter Module-Abschnitt.
Typ von dort
1
mein Google erste Seite Ihre Suchabfrage mit war genau das, was ich das erste Mal gelesen um ... wiki.nginx.org/HttpCoreModule , die in RED sagt der Artikel veraltet führt mich zu einer anderen Seite (müssen Sie yeilds unterschiedliche Ergebnisse kennen Google - basierten auf, wer du bist - wenn du eingeloggt bist und auf welchem ​​Server du landest). Ich bin überhaupt nicht zu der unten angegebenen Seite gekommen, die mit Google gerockt und herumgelesen hat :( !!!
Dean Hiller

Antworten:

16

Wie in der Nginx-Dokumentation angegeben , ~*wird bei Regex zwischen Groß- und ~Kleinschreibung unterschieden.

Ihre Syntax ist in Ordnung, sie kann jedoch auch ohne regulären Ausdruck umgeschrieben werden (kürzester Speicherort wird beim Abgleich der Anforderungen zuletzt verwendet):

location /api/postdata {
}

location / {
}
Andrei Mikhaltsov
quelle
1
ah, cool ... ja, ich versuchte googeln ~ * aber Google nicht Index Sonderzeichen zu gut (zu schlecht nginx Richtlinien nicht stattdessen als ich wahrscheinlich nach rechts auf dieser Seite gelandet wäre)
Dean Hiller
@ DeanHiller Sieht aus wie Google diesen Fehler behoben: D
Yarek T
Ihre Antwort könnte nicht richtig sein , wie /api/PostDatanicht ohne paßt~*
Devy