Назад | Перейти на главную страницу

nginx: записывать полный запрос / ответ со всеми заголовками?

У нас есть сервер приложений, который иногда зависает. Мы подозреваем, что это связано с неправильным запросом клиента.

Может ли nginx записывать в файлы полный запрос / ответ (например, записи скрипта), чтобы мы могли видеть запросы, которые были отправлены до зависания?

(Вероятно, нам нужно избегать pcap и этого подхода и делать все это в nginx)

Если nginx не подходит для этого, что (кроме сетевого анализатора) может быть?

Чтобы получить тело запроса, отправленное посетителями, используйте client_body_in_file_only on; и зарегистрируйте "временный" файл, в который он записан, в журналы, добавив var $request_body_file в формат журнала. «Временные» файлы по умолчанию будут расположены в каталоге client_temp.

Вы можете регистрировать заголовки запросов $http_<header> тоже и отправил заголовки с $sent_http_<header>.

Если у вас есть тело запроса и заголовки, вы сможете воспроизвести его и получить ответ, который получил ваш посетитель.

Также что-то вроде Гор следует тщательно продумать, чтобы вы могли воспроизвести трафик в другой среде, где вы могли бы позволить nginx записывать эти временные файлы, не вызывая проблем ввода-вывода в производстве (nginx не будет очищать их с помощью on значение, поэтому в данном случае это не так "временно").

митмпрокси кажется правильным инструментом для выполнения того, о чем вы просите.

mitmproxy - это интерактивный прокси-сервер «человек посередине» с поддержкой SSL для HTTP с консольным интерфейсом.

mitmdump - это версия mitmproxy для командной строки. Подумайте о tcpdump для HTTP.

Характеристики

  • Перехватывайте HTTP-запросы и ответы и изменяйте их на лету.
  • Сохраняйте полные HTTP-разговоры для последующего воспроизведения и анализа.
  • Воспроизведите клиентскую часть разговоров HTTP. Воспроизвести HTTP-ответы ранее записанного сервера.
  • Режим обратного прокси для перенаправления трафика на указанный сервер.
  • Режим прозрачного прокси в OSX и Linux.
  • Внесите изменения в HTTP-трафик по сценарию с помощью Python.
  • SSL-сертификаты для перехвата генерируются на лету.

Режим обратного прокси позволит вам захватывать запрос и ответ, как это делает Fiddler.