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


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 / {
}

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.