Tengo mi configuración de configuración para manejar un montón de solicitudes GET que rinden píxeles que funcionan bien para manejar el análisis y analizar cadenas de consulta para el registro. Con una secuencia de datos de terceros adicional, necesito manejar una solicitud POST a una url determinada que tiene JSON en un formato de conexión esperado dentro de su cuerpo de solicitud. No quiero usar un servidor secundario con proxy_pass
y solo quiero registrar toda la respuesta en un archivo de registro asociado como lo que hace con las solicitudes GET. Un fragmento de un código que estoy usando el siguiente aspecto:
petición GET
(que funciona muy bien):location ^~ /rl.gif {
set $rl_lcid $arg_lcid;
if ($http_cookie ~* "lcid=(.*\S)")
{
set $rl_lcid $cookie_lcid;
}
empty_gif;
log_format my_tracking '{ "guid" : "$rl_lcid", "data" : "$arg__rlcdnsegs" }';
access_log /mnt/logs/nginx/my.access.log my_tracking;
rewrite ^(.*)$ http://my/url?id=$cookie_lcid? redirect;
}
Aquí es un poco lo que yo estoy tratando de hacer: solicitud POST (que hace no funciona):
location /bk {
log_format bk_tracking $request_body;
access_log /mnt/logs/nginx/bk.access.log bk_tracking;
}
Curling curl http://myurl/bk -d name=example
me da una página 404 no encontrado.
Luego probé:
location /bk.gif {
empty_gif;
log_format bk_tracking $request_body;
access_log /mnt/logs/nginx/bk.access.log bk_tracking;
}
Curling curl http://myurl/bk.gif -d name=example
me da una 405 Not Allowed
.
Mi versión actual es nginx/0.7.62
. ¡Cualquier ayuda en la dirección correcta es muy apreciada! ¡Gracias!
ACTUALIZACIÓN Así que ahora mi puesto es así:
location /bk {
if ($request_method != POST) {
return 405;
}
proxy_pass $scheme://127.0.0.1:$server_port/dummy;
log_format my_tracking $request_body;
access_log /mnt/logs/nginx/my.access.log my_tracking;
}
location /dummy { set $test 0; }
es que lo almacena los datos enviados correctamente, pero devuelve un 404 sobre los solicitantes fin. Si cambio el código anterior para devolver un 200, así:
location /bk {
if ($request_method != POST) {
return 405;
}
proxy_pass $scheme://127.0.0.1:$server_port/dummy;
log_format my_tracking $request_body;
access_log /mnt/logs/nginx/my.access.log my_tracking;
return 200;
}
location /dummy { set $test 0; }
continuación se retorna el 200
correctamente, pero ya no registra los datos de envío.
OTRA ACTUALIZACIÓN Kinda encontró una solución de trabajo. Con suerte, esto puede ayudar a otros en su camino.
has llegado a ninguna parte con esto? Estoy frente a un problema similar. –