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?