У нас есть сервер приложений, который иногда зависает. Мы подозреваем, что это связано с неправильным запросом клиента.
Может ли 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.