Nginx 错误日志不会读取变量

Nginx 错误日志不会读取变量

在我的虚拟主机中我有:

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;

对于 root 和访问日志来说,它$server_name有效。对于错误日志则无效。

在此处输入图片描述

我看到它是由 root 而不是 pi 设置的(我使用π代替数据网) 我该如何解决?

nginx/1.13.5

答案1

据我所知,error_log即使您可以使用变量,但仍然不允许进入access_log(因为您的屏幕截图显示在您的场景中正常工作)。

除此之外,您几乎总是应该使用它,$host因为它是唯一保证的变量,无论用户代理的行为如何,都能说出合理的内容。

您可以检查 $host 和 $server_name 之间的区别nginx 文档

  • $host:按以下优先顺序:来自请求行的主机名,或来自“Host”请求标头字段的主机名,或与请求匹配的服务器名称。

  • $server_name:服务器名称接受了请求。它包含server_name处理请求的虚拟主机,因为它是在 nginx 配置中定义的。如果服务器包含多个 server_name,则只有第一个会出现在此变量中。

由于您必须考虑用户代理在形成 HTTP 请求时可能执行的所有操作(古老的 HTTP/1.0 请求和现代编写糟糕的软件可能随时发生),因此您应该考虑仅将变量$host用于您的预期目的。

值得一提的是access_log 被处理通过ngx_http_log_module,而error_log被处理有点不同ngx_core_module

相关内容