Когда вы должны использовать кавычки в конфигурации?


24

Я видел, как люди используют чрезмерные кавычки :

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

Я видел, как люди не используют кавычки :

add_header Access-Control-Allow-Origin *;

Насколько я знаю, оба работают нормально, так когда же вам нужно использовать кавычки?

Ответы:


29

Точный ответ - «никогда». Вы можете \заключить в кавычки или -escape некоторые специальные символы, такие как "" или ";" в строках (символы, которые делают значение оператора неоднозначным), так

add_header X-MyHeader "Test String;"; 

будет работать как

add_header X-MyHeader Test\ String\;;

На самом деле: просто используйте цитаты :)


Редактировать: как некоторые люди любят придираться: не обязательно полный список символов, которые могут сделать утверждение неоднозначным, в соответствии с моим пониманием nginxсинтаксиса конфигурации:

<space> " ' { } ; $ \ 

и может потребоваться экранирование $и \даже в кавычках, чтобы избежать раскрытия переменных.

К сожалению, я не могу найти полный и авторитетный список таких персонажей в документах.


1
Это не всегда придирки. Файл конфигурации может быть создан сторонним программным обеспечением. Который может быть снабжен шаблоном и переменными для интерполяции. Программное обеспечение не может быть уверенным, что переменные могут содержать, поэтому в идеале оно должно знать, как заключать в кавычки любую строку.
x-yuri

5

Кавычки требуются для значений, которые содержат пробелы и / или некоторые другие специальные символы, в противном случае nginxони не будут распознаваться. В вашем текущем примере кавычки не имеют значения, но в любом случае цитирование значений является хорошей практикой / практическим правилом


3
Каковы список специальных символов. Есть ли документация по этому вопросу и как их избежать. Я видел одинарные и двойные кавычки в одной строке ...
Pork 'n' Bunny
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.