有没有办法在nginx的error_log位置使用$ document_rootvariables? 在wiki的access_log位置上特别提到了它,但是没有提到error_log。 我猜这是与来自不同模块的东西有关吗?
只是为了避免在conf中重复自己,如果有办法做到这一点会很棒!
达伦
很不幸的是,不行。 如果你在一个指令中加了一个variables,而且没有插入,那么你就无能为力了。
有一个关于这个确切主题的Nginx FAQ页面 ,其中说(缩写):
variables不应该被用作模板macros。 相反,应该使用macros扩展和“include”指令来更容易地生成configuration,并且可以使用外部工具(例如sed + make或任何其他通用模板机制)来完成configuration。
access_log指令中使用的variables? 您提到access_log的文档包含一些variables用法是正确的。
开始猜测:有些指令比其他指令更强大。 根据Nginx的文档, access_log的第一个参数可以是一个path ,而error_log的第一个参数可以是一个文件 。 以下是访问日志文档页面的摘录:
server { root /spool/vhost/data/$host; access_log /spool/vhost/logs/$host; ...
root和access_log都可以使用$hostvariables。 因此,我认为被描述为一条path的论据是可以做可变插值的。