2012-03-04 34 views
15

Cuando se inicia nginx, crea el archivo de registro "access.log" con 0 tamaño. Pero no hay ningún registro escrito en él. error.log funciona bien.Nginx no puede escribir en access.log

nginx.conf:

http { 
    access_log /usr/local/webserver/nginx/logs/access.log combined; 
    .... 
} 

El archivo de registros es:

-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 

estoy totalmente confundido. @ _ @

¿Es un problema de permiso?

Sin embargo, en la parte posterior de nginx.conf, en la sección del servidor {}, ¡access_log funciona! ¿Por qué la sección http {} no funciona?

Respuesta

0

Debe vincular al usuario y agrupar nginx en sus archivos de registro.

chown nginx:nginx access.log 
chown nginx:nginx error.log 

¿Puedes publicar tu nginx.conf completo? ¿Con pastebin por ejemplo?

EDITAR: en cada sección debe definir la palabra clave como "combinado"!

+0

Es www-data: www-data en ubuntu – holms

+1

Si nginx es no se puede escribir en los registros que creó en primer lugar, modificar los archivos no está abordando la causa raíz del problema. Probablemente necesites mirar la configuración de nginx. –

+0

@holms por defecto, sí. – sitilge

15

Dependiendo de su configuración, el proceso maestro de nginx y los procesos de trabajo probablemente se ejecuten como usuarios diferentes.

Para ver los usuarios y grupos de procesos nginx:

necesidades de los usuarios
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 

el proceso de trabajo permiso de escritura para el archivo de registro.

Para ver los permisos de archivo de 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 

En este caso, el registro de acceso es de propiedad del proceso de trabajo de Nginx y tiene acceso de escritura.

Véase también nginx http_log_module documentos.

Como problema secundario, los registros nginx se pueden rotar una vez que alcanzan un cierto tamaño con el daemon logrotate. Cuando se crea el nuevo archivo de registro, debe crearse con propietario, grupo y permisos para permitir que el proceso de trabajo nginx escriba en él.

Estas configuraciones de rotación de registro para nginx se definen en /etc/logrotate.d/nginx

Véase también log rotation guide for ubuntu.

+1

logrotate no es un daemon, es un cronjob – Sebastian

+1

Buen punto @Sebastian. En este caso, la definición de daemon se deriva del griego antiguo: 'un espíritu de naturaleza benévola o benigna'. ;-) – Mark

+1

naturaleza verdadera de logrotate :) @Mark – Sebastian

7

Tuve un problema similar donde el archivo de registros de acceso no se estaba escribiendo, pero el archivo de registro de errores funcionaba bien. Los permisos también estaban bien para mí. Lo tengo a fijarse al forzar el proceso de nginx para recargar los archivos de registro utilizando

kill -USR1 `cat /var/run/nginx.pid` 

donde /var/run/nginx.pid es la ruta de acceso al archivo PID nginx

+1

Simplemente haciendo 'sudo service nginx restart' en Ubuntu hizo que comenzara a escribir el acceso.log de Nginx nuevamente para mí. (después de haber corregido los permisos del usuario correcto) – program247365

Cuestiones relacionadas