Quand devez-vous utiliser des guillemets dans la configuration?

24

J'ai vu des gens utiliser des citations excessives :

add_header 'Access-Control-Allow-Origin' '*';

J'ai vu des gens n'utiliser aucune citation :

add_header Access-Control-Allow-Origin *;

Les deux fonctionnent très bien pour autant que je sache, donc quand vous réellement avez à utiliser des guillemets?

Der Hochstapler
la source

Réponses:

29

La réponse exacte est "jamais". Vous pouvez soit citer ou \échapper certains caractères spéciaux comme "" ou ";" dans des chaînes (caractères qui rendraient la signification d'une instruction ambiguë), donc

add_header X-MyHeader "Test String;"; 

fonctionnerait comme

add_header X-MyHeader Test\ String\;;

En réalité: utilisez simplement des guillemets :)


Edit: Comme certaines personnes aiment nitpick: La liste pas nécessairement complète des caractères qui peuvent rendre une déclaration ambiguë est selon ma compréhension de la nginxsyntaxe de configuration:

<space> " ' { } ; $ \ 

et il peut être nécessaire de s'échapper $et \même dans des chaînes entre guillemets pour éviter une expansion variable.

Malheureusement, je ne trouve pas de liste complète et faisant autorité de ces personnages dans la documentation.

Sven
la source
1
Il ne s'agit pas toujours de piqûre. Le fichier de configuration peut être généré par un logiciel tiers. Qui pourrait être fourni avec un modèle et des variables à interpoler. Le logiciel ne peut pas être sûr de ce que les variables peuvent contenir, donc idéalement il devrait savoir comment citer n'importe quelle chaîne.
x-yuri
5

Des guillemets sont requis pour les valeurs qui contiennent des espaces et / ou d'autres caractères spéciaux, sinon nginxils ne les reconnaîtront pas. Dans votre exemple actuel, les guillemets ne font aucune différence, mais de toute façon, la citation de valeurs est une bonne pratique / règle générale

user1700494
la source
3
Quelle est la liste des caractères spéciaux. Existe-t-il une documentation à ce sujet et comment y échapper. J'ai vu des guillemets simples et doubles sur les mêmes lignes ...
Pork 'n' Bunny