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)


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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.