Fractionnement de longues lignes dans un fichier de configuration nginx

15

Afin de ne pas passer les ordures au back-end, j'ai une regex stricte pour une locationdirective. Cela ressemble à ceci:

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

Je voudrais plier la ligne à 80 caractères, existe-t-il un moyen de diviser la configuration? Les résultats suivants génèrent une erreur de syntaxe, mais c'est quelque chose que je recherche:

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

Je n'ai pas pu trouver d'indices dans la documentation ( http://wiki.nginx.org/ConfigNotation ni http://wiki.nginx.org/HttpCoreModule#location ne mentionnent rien sur les lignes de pliage)

Lekensteyn
la source
Pourriez-vous construire votre chaîne à partir de plusieurs fragments interpolés? (Je n'en ai aucune idée)
bsb
@bsb Vous ne pouvez pas utiliser de variables dans les expressions d'emplacement, donc non, vous ne pouvez pas définir de variables et utiliser l'interpolation de chaînes.
Lekensteyn

Réponses:

7

Je ne pense pas que vous puissiez faire ça.

nginx traite tous les espaces de manière égale, donc même si vous essayez de diviser votre chaîne comme ça, et que nginx pourrait l'analyser comme vous le vouliez, vous vous retrouveriez avec une expression régulière avec un tas d'espaces en elle, ce qui, j'en suis sûr, n'est pas '' t ce que vous voulez. Si nginx ne pouvait pas l'analyser, ce qui est plus probable, vous obtiendriez simplement une erreur de syntaxe.

Vous allez juste devoir vivre avec quelques longues lignes ou faire des expressions régulières moins complexes.

Michael Hampton
la source
Eh bien, s'il ne peut pas y avoir de grands espaces, je peux vivre avec ça. Mais une nouvelle ligne semble également être interprétée littéralement.
Lekensteyn
Ce n'est vraiment pas la fin du monde. :)
Michael Hampton
1
Pour l'instant je suis coincé avec un location ".../[a-zA-Z0-9_...-]+$"motif suivi d'un autre à l' location ~ "\.pkg\.tar\.xz$"intérieur. Merci pour votre réponse, j'espère qu'un jour une meilleure réponse apparaîtra;)
Lekensteyn