如何在fastcgi_param中组合文本和变量?

时间:2014-02-23 12:36:10

标签: nginx

tldr:如何在fastcgi_params的值部分中随机混合文本和变量?特别是在变量之间添加空格作为文本,无论是否使用"'都无效。

长版

fastcgi_para docs读取

  

值可以包含文本,变量及其组合。

不明确链接或指定文本格式是什么或组合格式是什么。

我该怎么做

我想在两个变量之间添加四个空格,以便理解fastcgi_param中使用的'表达式格式'。我收到错误。以下是nginx.conf中与行号相关的部分:

使用撇号'

尝试1
78: fastcgi_param  SCRIPT_FILENAME  $document_root'    '$fastcgi_script_name;
82: # deny access to .htaccess files, if Apache's document root

产生

nginx: [emerg] unexpected "s" in <nginx.conf>:82

尝试2(裸)

另一次尝试

78: fastcgi_param  SCRIPT_FILENAME  $document_root    $fastcgi_script_name;

产生

nginx: [emerg] invalid parameter "$fastcgi_script_name" in <nginx.conf>:78

使用双引号"

尝试3

如果我像这样使用"

78: fastcgi_param  SCRIPT_FILENAME  $document_root"    "$fastcgi_script_name;

我得到的错误是:

nginx: [emerg] unexpected end of file, expecting ";" or "}" in <nginx.conf>:128

如果我只是做

78: fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

像往常一样,它有效,所以我相信我的 nginx.conf没有其他错误。

试图查找source,但由于其广义性质,我还无法找到实际完成解析和变量替换的位置。

问题

如何以自由格式的方式将文本和变量与nginx混合,特别是在fastcgi_param的值部分?

我正在使用 nginx 1.2.5

1 个答案:

答案 0 :(得分:1)

正如nginx mailing list已经回答的那样,试试这个:

fastcgi_param SCRIPT_FILENAME  "$document_root    $fastcgi_script_name";

或者这个:

fastcgi_param SCRIPT_FILENAME  '$document_root    $fastcgi_script_name';

如果参数包含特殊字符,则为整个参数 应该用单引号或双引号括起来。