Teilen langer Zeilen in einer Nginx-Konfigurationsdatei

15

Um den Müll nicht an das Back-End weiterzuleiten, habe ich eine strenge Regel für eine locationDirektive. Es sieht aus wie das:

location ^~ "/(some|stuff|more|bar|etc(-testing)?)/[a-zA-Z0-9]+/...(more|restrict).ext {
    # other directives
}

Ich möchte die Zeile mit 80 Zeichen falten. Gibt es eine Möglichkeit, die Konfiguration aufzuteilen? Folgendes führt zu einem Syntaxfehler, den ich jedoch suche:

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" {

Ich konnte keine Hinweise in der Dokumentation finden ( http://wiki.nginx.org/ConfigNotation oder http://wiki.nginx.org/HttpCoreModule#location erwähnen nichts über Faltlinien)

Lekensteyn
quelle
Könnten Sie Ihren String aus mehreren interpolierten Fragmenten aufbauen? (Ich habe keine Ahnung)
bsb
@bsb In Positionsausdrücken können keine Variablen verwendet werden. Sie können also keine Variablen festlegen und keine Zeichenfolgeninterpolation verwenden.
Lekensteyn

Antworten:

7

Ich glaube nicht, dass du das schaffst.

nginx behandelt alle Leerzeichen gleich. Selbst wenn Sie versuchen würden, Ihre Zeichenfolge so zu teilen, und nginx sie so analysieren könnte, wie Sie es beabsichtigt haben, würden Sie eine Regex mit ein paar Leerzeichen in der Zeichenfolge finden, was ich sicher nicht bin. ' t was du willst. Wenn Nginx es nicht analysieren konnte, was wahrscheinlicher ist, würden Sie nur einen Syntaxfehler erhalten.

Sie müssen nur mit ein paar langen Zeilen leben oder weniger komplexe reguläre Ausdrücke bilden.

Michael Hampton
quelle
Nun, wenn es keine führenden Räume geben kann, kann ich damit leben. Aber ein Zeilenumbruch scheint auch wörtlich zu interpretieren zu sein.
Lekensteyn
Es ist wirklich nicht das Ende der Welt. :)
Michael Hampton
1
Im Moment bin ich mit einem location ".../[a-zA-Z0-9_...-]+$"Muster festgefahren, dem ein anderes folgt location ~ "\.pkg\.tar\.xz$". Vielen Dank für Ihre Antwort, hoffentlich zeigt sich eines Tages eine bessere Antwort;)
Lekensteyn