在我的虚拟主机中我有:
root /var/www/$server_name/public_html; index index.php; access_log /var/log/nginx/$server_name.access.log; error_log /var/log/nginx/$server_name.error.log debug;
对于根和访问日志$server_name工作。 它不适用于错误日志。
我看到它是由根而不是pi设置(我使用pi而不是数据www )如何解决这个问题?
nginx的/ 1.13.5
据我所知即使你可以在access_log使用它们(因为你的屏幕截图显示在你的场景中正常工作),variables仍然不被允许在error_log 。
除此之外,你应该总是使用$host因为它是唯一的保证variables,不pipe用户代理的行为如何,
您可以检查nginx文档上的$ host和$ server_name之间的区别:
$host :按照以下优先顺序:来自请求行的主机名,来自“主机”请求头字段的主机名,或与请求相匹配的服务器名。
$server_name : 接受请求的服务器的名称。 它包含处理请求的虚拟主机的server_name ,如在nginxconfiguration中定义的那样。 如果服务器包含多个server_name,则只有第一个服务器将出现在此variables中。
由于你必须考虑到用户代理可能做的所有事情,所以形成一个HTTP请求(古老的HTTP / 1.0请求和现代的编写错误的软件可能会一直发生),你应该考虑只使用$hostvariables为您的预期目的。
值得一提的是, access_log由ngx_http_log_module 处理 ,而error_log 的处理与ngx_core_module稍有不同。