我试图优化我的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的表示法。