Запись данных POST из $ request_body

Моя конфигурация настроена для обработки группы запросов 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 правильно, но больше не будет записывать данные сообщения.

ДРУГОЕ ОБНОВЛЕНИЕ Кинда нашла рабочее решение. Надеюсь, это поможет другим на их пути.

59
задан Tombart 24 August 2016 в 18:28
поделиться