nginx设置variables的位置

我试图优化我的nginxconfiguration,所以可以设置一个variables,所有的位置path将自动更新。 我有四条问题:

server_name php.domain.com; root /srv/web/vhosts/php/web; error_log /srv/web/vhosts/php/logs/error.log; access_log /srv/web/vhosts/php/logs/access.log; 

我想实现的是设置一个variables(在这个例子中是“php”),并将其包含到configuration中。

 set $variable "php"; server_name $variable.domain.com; root /srv/web/vhosts/$variable/web; error_log /srv/web/vhosts/$variable/logs/error.log; access_log /srv/web/vhosts/$variable/logs/access.log; 

然而,它接缝,Nginx忽略此configuration中的variables。 我做错了什么或不可能在位置path中使用variables?

variables不能在任何地方声明,也不能在任何指令中使用。

由于set指令的文档是:

 Syntax: set $variable value; Default: — Context: server, location, if 

直接的后果是你不能在一个http块中使用自定义variables。

更新 :在这个聊天室中与AlexeyTen讨论和实验之后。

  • access_log可以包含有限制的variables。 其中,缺less缓冲和事实上,主导斜线不能在一个variables中声明
  • error_log根本不适用于variables。
  • root指令可以包含variables。
  • server_name指令只允许严格的$hostname值作为一个类似variables的表示法。