Nginx не может записывать в access.log
Когда nginx запускается, он создает файл журнала "access.log" с размером 0. Но в нем нет журнала.
error.log отлично работает.
nginx.conf:
http {
access_log /usr/local/webserver/nginx/logs/access.log combined;
....
}
Файл журналов:
-rw-r--r-- 1 root root 0 Mar 4 00:54 access.log
-rw-r--r-- 1 root root 3903 Mar 4 00:54 error.log
Я совершенно смущен. @_ @
Это вопрос разрешения?
Однако в более поздней части nginx.conf в разделе server {} работает access_log! Почему http {} раздел не работает?
Ответы
Ответ 1
В зависимости от вашей конфигурации основные процессы и рабочие процессы nginx могут работать как разные пользователи.
Чтобы просмотреть пользователей и группы для процессов nginx:
ps -eo "%U %G %a" | grep nginx
root root nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
www-data www-data nginx: worker process
Пользователь рабочего процесса нуждается в разрешении записи для файла журнала.
Чтобы просмотреть права доступа к файлам access.log:
ls -l /var/log/nginx/access.log
-rw-r----- 1 www-data www-data 0 Apr 29 2012 /var/log/nginx/access.log
В этом случае журнал доступа принадлежит рабочему процессу nginx и имеет доступ на запись.
См. также nginx http_log_module docs.
В качестве вторичной проблемы журналы nginx могут быть повернуты, когда они достигнут определенного размера демоном logrotate. Когда новый файл журнала создается, он должен быть создан с владельцем, группой и разрешениями, чтобы рабочий процесс nginx мог писать на него.
Эти параметры вращения журнала для nginx определены в /etc/logrotate.d/nginx
См. также руководство по вращению журнала для ubuntu.
Ответ 2
У меня была аналогичная проблема, когда файл журналов доступа не записывался, но файл журнала ошибок работал нормально. Разрешения также были хороши для меня. Я получил его, чтобы исправить себя, заставив процесс nginx перезагрузить файлы журнала, используя
kill -USR1 `cat /var/run/nginx.pid`
где /var/run/nginx.pid
- это путь к вашему PID файлу nginx
Ответ 3
Вы должны привязать пользователя и группу nginx к вашим лог файлам.
chown nginx:nginx access.log
chown nginx:nginx error.log
Можете ли вы разместить свой полный nginx.conf? Например, с пастебином?
EDIT: в каждом разделе вы должны определить ключевое слово как "комбинированное"!