日志名称中的变量 - nginx

Mah*_*ery 13 nginx

我在 nginx 中有以下默认服务器设置:

# Default HTTP Server
server {
  listen 80 default;
  server_name _;
  access_log /var/log/nginx/$server_name.access.log;
  error_log /var/log/nginx/$server_name.error.log;

  server_name_in_redirect off;

  location / {
    root   domain.com/public;
    index  index.php;
    try_files $uri index.php;
  }

  location ~     \.(html|jpg|jpeg|gif|png|ico|css2|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ {
    root /path/to/domain.com/public;
    expires 30d;
    break;
  }

  charset utf-8;

  location ~ \.php$ {
    include /opt/nginx/conf/fastcgi_params;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index index.php;
    fastcgi_param  SCRIPT_FILENAME  /path/to/domain.com/public/index.php;   
  }

  location ~ \.(js|ico|gif|jpg|png|css)$ {
    root /path/to/domain.com/public;
  }
}
Run Code Online (Sandbox Code Playgroud)

我有几个域指向服务器。我想在这里完成是有日志中的任何格式/var/log/nginx/mydomain.com/access.log/var/log/nginx/mydomain.com.access.log

相反,我得到/var/log/nginx/$server_name.access.log.

如果我尝试目录方法,则在检查配置时会出现错误 nginx: [emerg] open() "/var/log/nginx/$server_name/access.log" failed (2: No such file or directory)

为什么 nginx 不将变量传递给文件名?

使用 nginx/1.0.0

war*_*ren 6

您需要使用$host变量 - 仅允许用于access_log指令

  • 不能在 `access_log` 中使用 `$host` 变量 (3认同)
  • 我假设没有为 error_log 传递变量的解决方法。这有点太糟糕了。 (2认同)