Nginx错误日志将不会读取variables

在我的虚拟主机中我有:

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_logngx_http_log_module 处理 ,而error_log 的处理与ngx_core_module稍有不同。