log info full error custom http post logging nginx webserver

http - info - nginx reverse proxy log



Realmente registrar el cuerpo de la solicitud POST(en lugar de "-") con nginx (1)

Nginx no analiza el cuerpo de la solicitud del cliente a menos que realmente lo necesite, por lo que generalmente no llena la variable $request_body .

Las excepciones son cuando:

  • envía la solicitud a un proxy,
  • o un servidor fastcgi.

Así que realmente necesitas agregar las directivas proxy_pass o fastcgi_pass a tu bloque.

La forma más sencilla es enviarlo a Nginx como un servidor proxy, por ejemplo con esta configuración:

location = /c.gif { access_log logs/uaa_access.log client; # add the proper port or IP address if Nginx is not on 127.0.0.1:80 proxy_pass http://127.0.0.1/post_gif; } location = /post_gif { # turn off logging here to avoid double logging access_log off; empty_gif; }

Si solo espera recibir algunos valores de par de claves, puede ser una buena idea limitar el tamaño del cuerpo de la solicitud:

client_max_body_size 1k; client_body_buffer_size 1k; client_body_in_single_buffer on;

También recibí errores "405 No permitido" al realizar pruebas con empty_gif; y curl (estaba bien desde el navegador), lo cambié para return 200; para probar adecuadamente con el rizo.

Estoy tratando de registrar el cuerpo POST y agregar $request_body log_format al log_format en la cláusula http , pero el comando access_log simplemente se imprime "-" como el cuerpo después de enviar la solicitud POST usando:

curl -d name=xxxx myip/my_location

Mi log_format (en la cláusula http ):

log_format client ''$remote_addr - $remote_user $request_time $upstream_response_time '' ''[$time_local] "$request" $status $body_bytes_sent $request_body "$http_referer" '' ''"$http_user_agent" "$http_x_forwarded_for"'';

Definición de mi ubicación (en la cláusula del servidor):

location = /c.gif { empty_gif; access_log logs/uaa_access.log client; }

¿Cómo puedo imprimir los datos reales de POST de curl?