時々ハングするアプリケーションサーバーがあります。クライアントからの不適切なリクエストによるものと思われます。
nginxは完全な要求/応答(フィドラーキャプチャなど)をファイルに記録できるので、ハングする前に送信された要求を確認できますか?
(おそらく、pcapとそのアプローチを避け、すべてをnginxで行う必要があります)
nginxがこのための適切なツールではない場合、(ネットワークアナライザー以外の)何がありますか?
時々ハングするアプリケーションサーバーがあります。クライアントからの不適切なリクエストによるものと思われます。
nginxは完全な要求/応答(フィドラーキャプチャなど)をファイルに記録できるので、ハングする前に送信された要求を確認できますか?
(おそらく、pcapとそのアプローチを避け、すべてをnginxで行う必要があります)
nginxがこのための適切なツールではない場合、(ネットワークアナライザー以外の)何がありますか?
回答:
訪問者から送信されたリクエスト本文を取得するには、ログ形式にclient_body_in_file_only on;
var $request_body_file
を追加して、ログに書き込まれる「一時」ファイルを使用してログに記録します。「一時」ファイルは、デフォルトでclient_tempディレクトリに配置されます。
リクエストヘッダー$http_<header>
もログに記録し、ヘッダーを送信できます$sent_http_<header>
。
リクエストの本文とヘッダーがある場合、それを再生して、訪問者が持っていた応答を取得できるはずです。
また、gorのようなものを非常に考慮する必要があります。そのため、nginxに本番環境でIOの問題を引き起こすことなくこれらの一時ファイルを書き込むことができる他の環境でトラフィックを再生することができます(nginxはon
値でそれらをパージしませんこの場合)。
client_body_in_file_only
を言っていて、$http_<header>
必要だとは気がつきませんでした。今わかった。
mitmproxyは、あなたが求めていることを行うための適切なツールのようです。
mitmproxyは、コンソールインターフェイスを備えた、HTTP用の対話型SSL対応中間者プロキシです。
mitmdumpは、mitmproxyのコマンドラインバージョンです。HTTP用のtcpdumpを考えてください。
特徴
- HTTP要求と応答をインターセプトし、それらを即座に変更します。
- 後で再生および分析するために、完全なHTTP会話を保存します。
- HTTP会話のクライアント側を再生します。以前に記録されたサーバーのHTTP応答を再生します。
- 指定されたサーバーにトラフィックを転送するリバースプロキシモード。
- OSXおよびLinuxの透過プロキシモード。
- Pythonを使用して、HTTPトラフィックにスクリプト化された変更を加えます。
- 傍受用のSSL証明書は、その場で生成されます。
リバースプロキシモードでは、Fiddlerと同じようにリクエストとレスポンスをキャプチャできます。