División de líneas largas en un archivo de configuración nginx

15

Para no pasar basura al back-end, tengo una expresión regular estricta para una locationdirectiva. Se parece a esto:

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

Me gustaría doblar la línea en 80 caracteres, ¿hay alguna manera de dividir la configuración? Lo siguiente produce un error de sintaxis, pero es algo que estoy buscando:

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

No pude encontrar sugerencias en la documentación ( http://wiki.nginx.org/ConfigNotation ni http://wiki.nginx.org/HttpCoreModule#location mencionan nada sobre líneas plegables)

Lekensteyn
fuente
¿Podría construir su cadena a partir de múltiples fragmentos interpolados? (No tengo idea)
bsb
@bsb No puede usar variables en expresiones de ubicación, así que no, no puede establecer variables y usar interpolación de cadenas.
Lekensteyn

Respuestas:

7

No creo que puedas hacer esto.

nginx trata todos los espacios en blanco por igual, por lo que incluso si intentas dividir tu cadena de esa manera, y nginx podría analizarlo de la manera que quisieras, terminarías con una expresión regular con un montón de espacios en blanco, lo que estoy seguro es que no t lo que quieras. Si nginx no pudiera analizarlo, lo que es más probable, obtendría un error de sintaxis.

Tendrás que vivir con unas pocas líneas largas o hacer expresiones regulares menos complejas.

Michael Hampton
fuente
Bueno, si no puede haber espacios principales, puedo vivir con eso. Pero una nueva línea parece ser interpretada literalmente también.
Lekensteyn
Realmente no es el fin del mundo. :)
Michael Hampton
1
Por ahora estoy atrapado con un location ".../[a-zA-Z0-9_...-]+$"patrón seguido por otro location ~ "\.pkg\.tar\.xz$"dentro. Gracias por su respuesta, espero que algún día aparezca una mejor respuesta;)
Lekensteyn