我想将变量$ host放在Nginx access_log的文件路径中:
http {
log_format compression '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"
"$gzip_ratio"';
server {
gzip on;
access_log /var/logs/$host.access.log compression;
}
}
基于Nginx doc:http://nginx.org/en/docs/http/ngx_http_log_module.html,$ host是嵌入式变量,应在日志路径中工作。但是,对于我而言,它不起作用。有人可以在这里提供一些提示吗?我的Nginx版本是1.10。谢谢
答案 0 :(得分:0)
尝试首先设置server_name参数。还要看看这个工作示例:
server {
if ($host ~* www\.(.*)) {
set $host_without_www $1;
rewrite ^(.*)$ http://$host_without_www$1/ permanent;
}
server_name_in_redirect off; #or folders like /awstats will redirect to _
listen 80;
server_name _;
access_log /var/log/nginx/$host.access_log main;
error_log /var/log/nginx/$host.access_log info;
root /var/www/$host/htdocs;
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:1026;
fastcgi_index index.php;
}
#For WP
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q=$1 last;
}
}
答案 1 :(得分:0)
可能不支持,即测试结果
[root@l nginx.d]# nginx -s quit
[root@l nginx.d]# nginx
[root@l nginx.d]# ls /var/log/nginx/
access.log error.log ${host}.log $host.log $server_name.log
[root@l nginx.d]# cat cms.0.dev.q.com.on
server{
server_name
cms.0.dev.q.com
cms-0.dev.q.com
;
error_log /var/log/nginx/${host}.log warn;
access_log /var/log/nginx/$server_name.log;
答案 2 :(得分:0)
根据 nginx 文档,在名称中使用变量时,缓冲写入不起作用,而 gzip 压缩是缓冲写入。所以你可以有一个变量或 gzip,但不幸的是不能同时使用。