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?