Estoy usando el paquete nginx predeterminado en el servidor Ubuntu 14.04. Se está utilizando /etc/nginx/nginx.conf
como configuración principal y luego incluye configuraciones de /etc/nginx/conf.d/*.conf
y /etc/nginx/sites-enabled/*
.
La configuración predeterminada de nginx tiene esta directiva para iniciar sesión en el registro de acceso
access_log /var/log/nginx/access.log;
Me gustaría agregar el encabezado X-Fordered-For, así que hago esto dentro de la conf.d
carpeta:
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
El problema que tengo es que luego obtengo dos registros dentro de mi archivo access.log, uno con la información del encabezado y otro sin él.
Sé que puedo sobrescribir el nginx.conf
archivo en sí, pero prefiero evitarlo si es posible. También me gustaría seguir usando el mismo archivo de registro ( access.log
).
¿Hay alguna manera de decirle a nginx que anule la directiva anterior y simplemente cambie el formato de registro sin modificar el nginx.conf
archivo principal ?
fuente
Respuestas:
la respuesta a su pregunta es NO, no puede anular un log_format en ningún nivel en nginx y no puede anular access_log cuando esté en el mismo nivel, excepto desactivarlo. Sin embargo, puede lograr lo que desea sin cambiar nginx.conf, pero tendrá que hacerlo a nivel del servidor {}.
El problema aquí es que la inclusión de conf.d / * está dentro de http {}, que es exactamente donde está la directiva access_log. Lo que puede hacer sin tocar nginx.conf es cambiar el servidor {} que esté utilizando (si no configuró uno, está utilizando el predeterminado ubicado en / etc / nginx / sites-enabled / default). Entonces, para lograr lo mismo sin cambiar nginx.conf, debe cambiar su archivo en la carpeta conf.d a:
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log off;
Y luego dentro de su servidor {} poner:
access_log /var/log/nginx/access.log main;
Eso debería darte lo que querías al principio.
fuente
main
log_format, por lo que debe elegir otro nombre.