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

Der*_*ler 30 nginx

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

add_header 'Access-Control-Allow-Origin' '*';
Run Code Online (Sandbox Code Playgroud)

我见过人们不使用引号

add_header Access-Control-Allow-Origin *;
Run Code Online (Sandbox Code Playgroud)

据我所知,两者都可以正常工作,所以你什么时候真正需要使用引号?

Sve*_*ven 34

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

add_header X-MyHeader "Test String;"; 
Run Code Online (Sandbox Code Playgroud)

会像

add_header X-MyHeader Test\ String\;;
Run Code Online (Sandbox Code Playgroud)

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


编辑:正如有些人喜欢吹毛求疵:根据我对nginx配置语法的理解,可以使语句含糊不清的不一定完整的字符列表是:

<space> " ' { } ; $ \ 
Run Code Online (Sandbox Code Playgroud)

它可能是必要的逃生$\甚至在被引用的字符串,以避免变量扩展。

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

  • 这并不总是关于吹毛求疵。配置文件可能由第三方软件生成。可能会提供模板和要插入的变量。软件不能确定变量可以包含什么,所以理想情况下它应该知道如何引用任何字符串。 (3认同)

use*_*494 6

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

  • 什么是特殊字符列表。是否有关于此的文档以及如何逃避它们。我在同一行看到了单引号和双引号... (3认同)