Divisão de linhas longas em um arquivo de configuração nginx

15

Para não passar lixo para o back-end, tenho uma regex estrita para uma locationdiretiva. Se parece com isso:

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

Gostaria de dobrar a linha em 80 caracteres, existe uma maneira de dividir a configuração? O seguinte resulta em um erro de sintaxe, mas é algo que estou procurando:

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

Não foi possível encontrar dicas na documentação ( http://wiki.nginx.org/ConfigNotation nem http://wiki.nginx.org/HttpCoreModule#location mencionam algo sobre linhas dobradas)

Lekensteyn
fonte
Você poderia criar sua string a partir de vários fragmentos interpolados? (Eu não tenho idéia)
bsb
@bsb Você não pode usar variáveis ​​em expressões de localização; portanto, não, você não pode definir variáveis ​​e usar interpolação de string.
Lekensteyn

Respostas:

7

Eu não acho que você pode fazer isso.

O nginx trata todo o espaço em branco da mesma forma; mesmo que você tente dividir sua string dessa maneira, e o nginx possa analisá-lo da maneira que você deseja, você terminará com uma regex com um monte de espaço em branco, o que, com certeza, não é ' o que você quer. Se o nginx não puder analisá-lo, o que é mais provável, você receberá um erro de sintaxe.

Você só terá que conviver com algumas longas filas ou fazer expressões regulares menos complexas.

Michael Hampton
fonte
Bem, se não pode haver espaços à esquerda, posso viver com isso. Mas uma nova linha parece ser interpretada literalmente também.
Lekensteyn 02/02
Realmente não é o fim do mundo. :)
Michael Hampton
1
Por enquanto, estou preso a um location ".../[a-zA-Z0-9_...-]+$"padrão seguido por outro por location ~ "\.pkg\.tar\.xz$"dentro. Obrigado pela sua resposta, espero que algum dia uma resposta melhor mostra-se;)
Lekensteyn