什么时候必须在 Nginx 配置中使用引号?

什么时候必须在 Nginx 配置中使用引号?

我见过人们使用过多的引号

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

我见过人们不使用引号

add_header Access-Control-Allow-Origin *;

据我所知,两种方法都很好用,那么你什么时候才能真正使用引号?

答案1

确切的答案是“从不”。您可以\在字符串中引用或转义一些特殊字符,如“ ”或“;”(这些字符会使语句的含义不明确),因此

add_header X-MyHeader "Test String;"; 

会像

add_header X-MyHeader Test\ String\;;

事实上:只需使用引号:)


nginx编辑:正如有些人喜欢吹毛求疵:根据我对配置语法的理解,可能使语句产生歧义的字符列表不一定完整:

<space> " ' { } ; $ \ 

并且可能需要转义$甚至\在引号字符串中以避免变量扩展。

不幸的是,我无法在文档中找到此类字符的完整且权威的列表。

答案2

包含空格和/或其他特殊字符的值需要加引号,否则nginx将无法识别它们。在您当前的示例中,引号没有区别,但无论如何,引用值是一种很好的做法/经验法则

答案3

一个片段来自“if”的文档

如果正则表达式包含“}”或“;”字符,则整个表达式应该用单引号或双引号括起来。

还有提到转义映射中的源(左侧匹配)值

如果源值与下面描述的特殊参数名称之一匹配,则应以“\”符号作为前缀...

  • 默认价值...
  • 主机名...
  • 包括文件...
  • 易挥发的

相关内容