Aby nie przekazywać śmieci do zaplecza, mam ścisłe wyrażenie regularne dla location
dyrektywy. To wygląda tak:
location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/...(more|restrict).ext {
# other directives
}
Chciałbym złożyć linię przy 80 znakach, czy istnieje sposób na podzielenie konfiguracji? Następujące wyniki powodują błąd składniowy, ale szukam czegoś:
location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/"\
"...(more|restrict).ext" {
# results in a literal newline (%0A) being accepted
location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/
...(more|restrict).ext" {
Nie mogłem znaleźć wskazówek w dokumentacji ( http://wiki.nginx.org/ConfigNotation ani http://wiki.nginx.org/HttpCoreModule#location wspominając coś o składaniu linii)
nginx
configuration
Lekensteyn
źródło
źródło
Odpowiedzi:
Nie sądzę, że możesz to zrobić.
nginx traktuje wszystkie białe znaki jednakowo, więc nawet jeśli spróbujesz tak podzielić łańcuch, a nginx może go parsować tak, jak chciałeś, skończyłbyś się wyrażeniem regularnym z dużą ilością białych znaków, co na pewno nie jest t czego chcesz. Jeśli nginx nie może go przeanalizować, co jest bardziej prawdopodobne, otrzymasz błąd składniowy.
Musisz po prostu żyć z kilkoma długimi liniami lub tworzyć mniej złożone wyrażenia regularne.
źródło
location ".../[a-zA-Z0-9_...-]+$"
wzorem, a potem innym wlocation ~ "\.pkg\.tar\.xz$"
środku. Dzięki za odpowiedź, mam nadzieję, że pewnego dnia pojawi się lepsza odpowiedź;)