14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Application Load Balancerで付与されるHTTPヘッダ

Last updated at Posted at 2020-02-15

###概要
AWSのApplication Load Balancer(ALB)を使ってWeb-App-DBの3層構成を組むことが一般的に多いと思われるが、ALBではHTTPリクエストに対してHTTPヘッダを付与することがある。非ALB構成とALB構成で付与されるHTTPリクエストヘッダの差異をネットワークキャプチャで調査してみる。

##ネットワークキャプチャコマンド

###tcpdumpをWebサーバで発行
tcpdump -i eth0 -n -tttt port <port番号> -w /tmp/web.pcap

##前提構成

①前段ALB_HTTPS構成
#HTTPリクエストの流れ(APP,DB層は検証の目的に外れるので省略。
Clinet  ===> ALB(443) ===> NGINX@WebServer(80)
Screen Shot 2020-02-15 at 11.51.10.png
②前段ALB_HTTP構成
#HTTPリクエストの流れ(APP,DB層は検証の目的に外れるので省略。
Clinet  ===> ALB(80) ===> NGINX@WebServer(80)
Screen Shot 2020-02-15 at 11.47.20.png
③Webサーバ直HTTP構成
#HTTPリクエストの流れ(APP,DB層は検証の目的に外れるので省略。
Clinet  ===> NGINX@WebServer(80)
Screen Shot 2020-02-15 at 11.56.10.png

###検証結果

  • 結果的に、ALBを経由した場合だと以下の4つのHTTPヘッダが追加付与されていることが分かる。

X-Forwarded-For

ロードバランサなどの機器を経由してWebサーバに接続するクライアントの送信元IPアドレスを特定する際のデファクトスタンダード。クライアントの送信元IPアドレスの特定は、ロードバランサなどでクライアントの送信元IPアドレスが変換された場合でも、HTTPヘッダに元のクライアントIPアドレスの情報を付加することで実現。Webサーバ側でクライアントのIPアドレスを特定するために前段のLBで付与する必要がある。

例えば以下のような構成だと、Webサーバで受け取るHTTPリクエストヘッダはX-Forwarded-For: Clinetとなる。

Clinet  ===> ALB(443) ===> WebServer

上記であればSimpleだが多段プロキシ構成だと話が複雑になる。
例えば以下のような構成だと、Webサーバで受け取るHTTPリクエストヘッダはX-Forwarded-For: Clinet ALB Proxy1となる。Webサーバにリクエストを転送する主体はそれまでのアクセス元のIP(自らを含まない)をWebサーバに転送する時点でX-Forwarded-Forに付与する仕組み。

Clinet  ===> ALB(443) ===> Proxy1 ===> Proxy2 ===> WebServer

この状態から、ClientのIPアドレスをフィルタする方法は各Webサーバの設定による。

X-Forwarded-Proto

プロキシまたはロードバランサーへ接続するのに使っていたクライアントのプロトコル (HTTP または HTTPS) を特定する。

X-Forwarded-Port

プロキシまたはロードバランサーへ接続するのに使っていたクライアントからの宛先ポートを特定する。

X-Forwarded-Amzn-Trace-Id

クライアントからのターゲットまたは他のサービスへの HTTP リクエストを追跡するための一意な識別子。ALBが、クライアントからのリクエストを受信すると、ターゲットにリクエストを送信する前に、[X-Amzn-Trace-Id] ヘッダーを追加、または更新する。Webサーバのアクセスログに記録することでALB側のアクセスログと比較してリクエストを特定可能

###参考URL

14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?