Назад | Перейти на главную страницу

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

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

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

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

add_header Access-Control-Allow-Origin *;

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

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

add_header X-MyHeader "Test String;"; 

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

add_header X-MyHeader Test\ String\;;

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


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

<space> " ' { } ; $ \ 

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

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

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

Один фрагмент из документации для "если":

Если регулярное выражение включает «}» или «;» символов, все выражения следует заключать в одинарные или двойные кавычки.

Также есть упоминание о экранирование значений источника (совпадение слева) на карте:

Если исходное значение совпадает с одним из названий специальных параметров, описанных ниже, перед ним должен стоять символ «\» ...

  • дефолт стоимость ...
  • имена хостов ...
  • включают файл ...
  • летучий