【図解】Webリクエストの旅:DNSからコンテナ内のLaravelに届くまで
「インフラ・ネットワーク・コンテナの知識がバラバラで、全体像が掴めない」
そんな状態を卒業するために、ブラウザでAPIを叩いてからLaravelコンテナが処理するまでの全工程を、現実世界の「配送」に例えて整理しました。
0. 全体像:インフラ・ネットワークの「階層」まとめ
各工程を理解するために、まずは「TCP/IP 4階層モデル」を配送に例えて整理します。
| 階層 | ネットの用語 | 配送の例え | 役割 |
|---|---|---|---|
| 第4層 | HTTP / SSH / DNS | 手紙の内容 | 「データの中身」や「会話のルール」を決める |
| 第3層 | TCP / UDP / ポート | 配送方法 | 「書留(TCP)」か「普通(UDP)」か。窓口番号(ポート)を指定 |
| 第2層 | IP / ルーティング | 宛先住所 | ネットワーク上の住所(IPアドレス)を特定する |
| 第1層 | ケーブル / Wi-Fi | 道路とトラック | 電気信号や光として、物理的にモノを運ぶ |
1. DNS:住所の特定(第4層:アプリケーション層)
ユーザーが https://api.example.com/users をクリックした瞬間、旅が始まります。
-
アクション: ブラウザが「
api.example.comのIPアドレスを教えて!」とDNSサーバーに問い合わせます。 - 配送の例え: 電話帳で相手の「正確な住所(IP)」を調べるステップです。
2. CloudFront:世界の玄関口(第3・4層)
リクエストはVPCに行く前に、世界中にあるAWSの拠点「CloudFront」に届きます。
-
役割:
- キャッシュ確認: すでに同じデータがあれば、ここで即返却して終了。
- HTTPS終端: 安全な通信(暗号化)のための鍵交換を行います。
- 配送の例え: 街のあちこちにある「総合受付センター」を通るイメージです。
3. インターネットゲートウェイ & VPC:土地への入場(第1・2層)
データが物理的な光ファイバーを通り、AWS内のあなたのネットワーク(VPC)に届きます。
- 役割: ルートテーブルという地図を参照し、「このIPは、あのEC2サーバーへ届けろ」と道案内されます。
- 配送の例え: 私有地(VPC)の門をくぐり、敷地内の道路を走るステップです。
4. セキュリティグループ:門番のチェック(第3層:トランスポート層)
サーバー(建物)の直前で、AWSのファイアウォールが通信を検査します。
- チェック内容: 「宛先ポートは 443(HTTPS) か?」「許可された送信元か?」を確認。
- 配送の例え: 建物に入る前の「セキュリティチェック」です。許可のない窓口(ポート)宛の荷物はここで破棄されます。
5. EC2 & Docker:建物内での仕分け(第3層)
無事に建物(EC2インスタンス)の中にパケットが届きます。
- アクション: OS(Linux)が届いたパケットのポート番号を見て、「これはDockerが管理しているLaravelコンテナ宛だ」と判断し、中へ転送します。
- 配送の例え: 建物の受付が、荷物の「部屋番号(ポート)」を見て、奥の部屋(コンテナ)へ運ぶイメージです。
6. Laravelコンテナ:アプリケーションの実行(第4層)
ついに、部屋(コンテナ)の中で待機しているLaravelにリクエストが届きます。
-
アクション:
- Nginx(Webサーバー)がリクエストを受信。
- PHP-FPM/Laravel がプログラムを実行(DBアクセスなど)。
- 結果を「JSON」などの形にパッケージングして返送します。
- 配送の例え: 部屋の中の担当者が、手紙(HTTP)を読んで、返事(HTTPレスポンス)を書いて発送するステップです。
まとめ:トラブルシューティングへの応用
この流れを知っていると、エラー時に「どの階層」を疑えばいいかが見えてきます。
- 応答が全くない(Timeout): セキュリティグループ(第3層)の門番が止めている可能性が高い。
- 住所が見つからない: DNSの設定ミス。
- 500系エラー: 建物(EC2)には届いているが、中のアプリ(Laravel/第4層)がバグっている。
おわりに
インフラは「土地・建物・窓口・言葉」の組み合わせです。この旅路をイメージできるようになれば、モダンなインフラ構成も怖くありません!