HTTP 上級① curl -v で通信を読む
Pro会員限定上級約40分7レッスン
curl -I でステータスを見るだけでは分からない「途中で何が起きたか」を、curl -v の行から読み取ります。リダイレクトを -L で追い、Keep-Alive による接続の再利用を確かめ、nginx を通さずに裏側のアプリを直接叩いて切り分けます。最後は /members のリダイレクトループの原因を突き止め、X-Forwarded-Proto を渡して直します。
対象者: リバースプロキシ配下の Web サービスを運用する方 / 「ブラウザでは開けない」の原因を自分で切り分けたい方
前提知識: ネットワーク中級「curl -I ヘッダー診断道場」「HTTPステータスコード完全読解」修了程度
この教材を終えると、できるようになること
- curl -v の出力を「*」「>」「<」と本文に読み分け、接続先・送ったリクエスト・受け取ったステータスとヘッダーを説明できるようになる。
- curl -sIL でリダイレクトを最後まで追い、各段のステータスとヘッダー(X-Upstream)から、nginx 自身の応答と上流のアプリの応答を見分けられるようになる。
- curl -v で複数の URL を1回で取得し、DNS キャッシュと接続の再利用の行から、Keep-Alive で省けた往復を説明できるようになる。
- curl -H 'Host: ...' で上流のアプリに直接リクエストし、nginx 経由の応答と比べて、問題がリバースプロキシとアプリのどちらにあるかを切り分けられるようになる。
- curl -sIL --max-redirs でリダイレクトループを安全に再現し、Location と X-Upstream から、ループを起こしているのがどこかを特定できるようになる。
- TLS を終端するリバースプロキシとアプリの関係を説明し、nginx の proxy_set_header で X-Forwarded-Proto を渡して、設定の検査・反映・確認までを安全に行えるようになる。
修了後の姿: プロトコルの中身とネットワーク設計を理解し、複雑な障害の根本原因の特定から再発防止の設計まで任せられるエンジニアへ。
Chapter 1HTTP のやり取りを読む
curl -v の行を読み分け、リバースプロキシとアプリのどちらが答えているかを切り分けます。
- curl -v の3種類の行(* > <)を読む* は curl のつぶやき、> は送ったもの、< は受け取ったもの約6分(有料会員限定)
- リダイレクトを追う(-L)301 の先までたどり、最後にどの上流が答えたかを見る約6分(有料会員限定)
- Keep-Alive で接続を使い回す2つ目のリクエストは、TCP も TLS もやり直さずに送られる約5分(有料会員限定)
- Host ヘッダーで裏側を直接叩くnginx を通さずアプリに聞けば、どこまでが正常かが分かる約6分(有料会員限定)
- リダイレクトループを見つける同じ URL への 301 が延々と続く。返しているのは nginx ではなくアプリ約6分(有料会員限定)
- X-Forwarded-Proto を渡して直す「利用者は https で来た」とアプリに伝えれば、ループは止まる約6分(有料会員限定)
Chapter 2確認クイズ
curl -v の読み方とリバースプロキシの切り分けの理解度をチェックします。