自定义的nginxconfigurationvariables没有被展开

我正在运行nginx 1.2.8版本。

看来下面configuration中的$log$elog没有展开,结果没有任何logging。 是这个问题,我怎样才能让他们扩大?

nginxconfiguration:

 server { listen xx.xx.xx.xx:80 default; server_name domain.com; set $docroot /home/domain.com/public_html; set $log /home/domain.com/logs/access_log; set $elog /home/domain.com/logs/error_log; root $docroot; error_log $elog; include /etc/nginx/http-backend.conf; } 

/etc/nginx/http-backend.confconfiguration:

 ..... location ~* ^.+\.(jpg|jpeg|gif|png|svg|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|ico|swf|txt|tgz|tbz|pdfpls|torrent)$ { root $docroot; try_files $uri @fallback; access_log $log main; error_log $elog; expires 30d; add_header Pragma "public"; add_header Cache-Control "public"; # error_page 404 = @fallback; } ..... 

UPD:感谢瓦列里Viktorovsky我解决这个通过更改权限到日志文件夹。

 chown -R apache.root /home/*/logs/ chmod -R 750 /home/*/logs/ 

提到的解决方法,稍作修改,也已应用。 没有它,即使拥有正确的权限也不行。 $log$elog保持不变,但斜杠被添加。

更新/etc/nginx/http-backend.confconfiguration:

 ..... location ~* ^.+\.(jpg|jpeg|gif|png|svg|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar|ico|swf|txt|tgz|tbz|pdfpls|torrent)$ { root $docroot; try_files $uri @fallback; # access_log $log main; # error_log $elog; access_log /$log main; error_log /$elog; expires 30d; add_header Pragma "public"; add_header Cache-Control "public"; # error_page 404 = @fallback; } ..... 

仍然有一个问题,因为Apache创build拥有者根的日志文件。 为了部分解决这个问题,同样的命令已经被添加到logrotate config:

 /home/*/logs/*_log { missingok notifempty weekly minsize 50M compress rotate 60 sharedscripts postrotate /sbin/service nginx reload > /dev/null 2>/dev/null || true /sbin/service httpd reload > /dev/null 2>/dev/null || true chown -R apache.root /home/*/logs/ > /dev/null 2>/dev/null || true chmod -R 750 /home/*/logs/ > /dev/null 2>/dev/null || true endscript } 

nginx工作人员必须有权在/home/domain.com/logs中创build文件

因此请检查/home/domain.com/logs目录的权限。

你也可以使用小的解决方法:

 server { set $log 'home/domain.com/logs/access_log'; access_log /$log; }