co to jest lokalizacja Nginx ~ * i ~

15

Próbuję trochę lepiej zrozumieć nginx i próbuję utworzyć wyrażenie regularne, w którym każdy adres URL, który NIE pasuje, /api/postdataV1jest kierowany do innego klastra serwerów. Widzę te dwie rzeczy w przykładach bez wyjaśnienia

location ~ {some regex}

location ~* (some regex}

Moje pierwsze pytanie brzmi: co to jest ~i ~*(myślę, że to ~tylko oznacza, że ​​określam regex?), Ale co ~*wtedy?

Myślę, że chcę tego. Czy to byłoby poprawne?

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

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

Czy to byłoby poprawne? ale co z ~*... nie rozumiem tego

dzięki Dean

Dean Hiller
źródło
wiki zawsze warto najpierw zajrzeć.
ten facet stamtąd
1
Przejrzałem dokumenty, ale po prostu nie znalazłem odpowiednich linków i znalazłem się na stronie dokumentacji dla „lokalizacji”, która tak naprawdę powinna zawierać te informacje, ale tego nie zrobiła. (wiki, jak pamiętam, odsyłało mnie do dokumentacji jako najbardziej aktualnej).
Dean Hiller
Chciałbym google nginx location, pierwszy hit to :), ale muszę przyznać, trzeba się przyzwyczaić do dokumentacji Nginx, szczególnie. znajdowanie odpowiednich rzeczy poniżej sekcji modułów.
ten facet stamtąd
1
moja pierwsza strona google przy użyciu wyszukiwanego hasła była dokładnie tym, co przeczytałem za pierwszym razem ... wiki.nginx.org/HttpCoreModule, który w RED mówi, że artykuł jest przestarzały, co prowadzi mnie do innej strony (musisz znać google, różne wyniki oparte na wynikach na to, kim jesteś, jeśli jesteś zalogowany i na którym serwerze trafisz). W ogóle nie dotarłem do podanej poniżej strony, która zachwiała się za pomocą Google'a i czytania :( !!!
Dean Hiller

Odpowiedzi:

16

Jak stwierdzono w dokumentacji nginx , ~*wyrażenie regularne służy do dopasowania bez rozróżniania wielkości liter i rozróżnia małe i ~wielkie litery.

Twoja składnia jest poprawna, ale można ją przepisać bez wyrażenia regularnego (najkrótsza lokalizacja jest ostatnia w dopasowaniu żądania):

location /api/postdata {
}

location / {
}
Andriej Michałow
źródło
1
ah, spoko ... tak, próbowałem googling ~ *, ale Google nie indeksuje zbyt dobrze znaków specjalnych (szkoda, że ​​nginx nie używał dyrektyw, zamiast tego prawdopodobnie trafiłbym na tę stronę)
Dean Hiller
@DeanHiller Wygląda na to, że Google naprawił ten błąd: D
Yarek T
Twoja odpowiedź może być niepoprawna, ponieważ /api/PostDatanie będzie pasować bez~*
Devy