Estou executando o nginx versão 1.2.8.
Parece que $log
e $elog
na configuração abaixo não são expandidos e, como resultado, nada é registrado. Esse é o problema e como posso fazer com que eles se expandam?
Configuração nginx:
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;
}
Configuração do
/etc/nginx/http-backend.conf:
.....
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: Graças a Valery Viktorovsky , resolvi isso alterando as permissões para pastas de registros.
chown -R apache.root /home/*/logs/
chmod -R 750 /home/*/logs/
A solução alternativa mencionada, ligeiramente modificada, também foi aplicada. Não funciona sem ele, mesmo com permissões corretas. Os valores de $log
e $elog
permanecem inalterados, mas a barra é adicionada.
Atualizado a configuração de /etc/nginx/http-backend.conf:
.....
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;
}
.....
Ainda há um problema, porque o apache cria arquivos de log com a raiz do proprietário.
Para resolver parcialmente isso, os mesmos comandos foram adicionados ao 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
}