Dividere le righe lunghe in un file di configurazione nginx


15

Per non passare la spazzatura al back-end, ho una regex rigorosa per una locationdirettiva. Sembra così:

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

Vorrei piegare la linea a 80 caratteri, c'è un modo per dividere la configurazione? Di seguito viene generato un errore di sintassi, ma è qualcosa che sto cercando:

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

Non ho trovato suggerimenti nella documentazione ( http://wiki.nginx.org/ConfigNotationhttp://wiki.nginx.org/HttpCoreModule#location menzionano qualcosa sulle linee di piegatura)


Potresti costruire la tua stringa da più frammenti interpolati? (Non ne ho idea)
bsb,

@bsb Non è possibile utilizzare le variabili nelle espressioni di posizione, quindi no, non è possibile impostare variabili e utilizzare l'interpolazione di stringhe.
Lekensteyn,

Risposte:


7

Non penso che tu possa farlo.

nginx tratta allo stesso modo tutti gli spazi bianchi, quindi anche se provassi a dividere la stringa in quel modo, e nginx potrebbe analizzarla come volevi, finiresti con una regex con un mucchio di spazi bianchi, che sono sicuro che non è ' t quello che vuoi. Se nginx non fosse in grado di analizzarlo, il che è più probabile, si otterrebbe un errore di sintassi.

Dovrai solo vivere con poche righe o creare espressioni regolari meno complesse.


Bene, se non ci possono essere spazi iniziali, posso conviverci. Ma una nuova riga sembra essere interpretata anche alla lettera.
Lekensteyn,

Non è davvero la fine del mondo. :)
Michael Hampton

1
Per ora sono bloccato con uno location ".../[a-zA-Z0-9_...-]+$"schema seguito da un altro location ~ "\.pkg\.tar\.xz$"dentro. Grazie per la risposta, spero che un giorno si presenti una risposta migliore;)
Lekensteyn,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.