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)


¿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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.