gold for features edition company community nginx

for - URL de registro completa en nginx log



gitlab for company (2)

Usamos el siguiente archivo de configuración de sitio nginx en nuestro entorno de producción.

log_format main ''$http_x_forwarded_for - $remote_user [$time_local] "$request" '' ''$status $body_bytes_sent "$http_referer" '' ''"$http_user_agent" $request_time''; server { root /srv/www/web; server_name *.test.com; access_log /var/log/nginx/xxx.test.com.access.log main;

Las solicitudes http " http://a.test.com/ping " y " http://b.test.com/ping " se registrarán en el archivo xxx.test.com.access.log.

Pero hay un problema, nginx no almacena "nombre de dominio" en xxx.test.com.access.log.

" http://a.test.com/ping " y " http://b.test.com/ping " comparten la misma solicitud "Get / ping".

¿Cómo puedo registrar "a.test.com" o "b.test.com" en nginx log?


Intente agregar la variable $host en log_format:

log_format main ''$http_x_forwarded_for - $remote_user [$time_local] "$host" "$request" '' ''$status $body_bytes_sent "$http_referer" '' ''"$http_user_agent" $request_time'';

http://wiki.nginx.org/HttpCoreModule#.24host :

$ host

Esta variable es igual a Host de línea en el encabezado de solicitud o nombre del servidor que procesa la solicitud si el encabezado de Host no está disponible.

Esta variable puede tener un valor diferente de $ http_host en tales casos: 1) cuando el encabezado de entrada del Host está ausente o tiene un valor vacío, $ host es igual al valor de la directiva server_name; 2) cuando el valor de Host contiene el número de puerto, $ host no incluye ese número de puerto. El valor $ host siempre está en minúscula desde 0.8.17.


Si desea registrar la URL completa solicitada, entonces mi método es

log_format main ''$http_x_forwarded_for - $remote_user [$time_local] '' ''"$request_method $scheme://$host$request_uri $server_protocol" '' ''$status $body_bytes_sent "$http_referer" '' ''"$http_user_agent" $request_time'';

Entonces, divida la solicitud $ en sus partes constituyentes y muestre $ host en el medio. También le permite ver si la solicitud es http es https.