Моя конфигурация настроена для обработки группы запросов GET, которые отображают пиксели, которые отлично работают для обработки аналитики и синтаксического анализа строк запросов для регистрации. С дополнительным сторонним потоком данных мне нужно обработать запрос POST на заданный URL-адрес, который имеет JSON в ожидаемом регистрируемом формате внутри тела запроса. Я не хочу использовать дополнительный сервер с proxy_pass
и просто хочу записывать весь ответ в связанный файл журнала, как это происходит с запросами GET.
Запрос POST (который не работает):
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
дает мне страницу 404, которая не найдена.
Затем я попробовал:
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
дает мне 405 Not Allowed
.
Моя текущая версия - nginx / 0.7.62
. Любая помощь в правильном направлении очень ценится! Спасибо!
ОБНОВЛЕНИЕ Итак, теперь мой пост выглядит так:
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; }
Он правильно регистрирует данные поста, но возвращает 404 на стороне запрашивающего. Если я изменю приведенный выше код, чтобы вернуть 200, например:
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; }
Затем он вернет 200
правильно, но больше не будет записывать данные сообщения.
ДРУГОЕ ОБНОВЛЕНИЕ Кинда нашла рабочее решение. Надеюсь, это поможет другим на их пути.