日志名称中的变量-Nginx


12

我在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;
  }
}

我有几个指向服务器的域。我要在此处完成的操作是使日志格式为/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


您正在运行什么版本?从0.7.4开始,仅允许使用日志文件名中的变量。wiki.nginx.org/HttpLogModule
Frank Farmer

3
即使如此,也只能在access_log中。仍不允许在error_log中使用变量。$ server_name可能也不是您真正要查找的变量,因为在您的情况下,它将始终扩展为“ _”。您可能真的在寻找$ host。
kolbyjack 2011年

我正在使用1.0.0,并感谢$ host上的指针-这就是我想要完成的工作。另外,不知道是否存在服务器故障-谢谢您的迁移。
Mahdi.Montgomery 2011年

1
如今在最新版本中这不可能吗?
snh_nl

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.