我在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
即使如此,也只能在access_log中。仍不允许在error_log中使用变量。$ server_name可能也不是您真正要查找的变量,因为在您的情况下,它将始终扩展为“ _”。您可能真的在寻找$ host。
—
kolbyjack 2011年
我正在使用1.0.0,并感谢$ host上的指针-这就是我想要完成的工作。另外,不知道是否存在服务器故障-谢谢您的迁移。
—
Mahdi.Montgomery 2011年
如今在最新版本中这不可能吗?
—
snh_nl