2017年03月04日
このエントリーをはてなブックマークに追加
以前も同様の記事を書いています。
2013年11月13日:ロードバランサー経由のアクセス時、access.log にオリジナルのIPを取得する

このときには、X-Forwarded-For ではダメで、%{X-Cluster-Client-IP}i をつけると大丈夫でした。
最近のIIJでは Zeus を買収した brocade というロゴに変わっていました。製品は Zeusのそれと変わらないようです。

IIJのApacheではすでに X-Cluster-Client-IP の設定が行われていました(たぶん)。またX-Forwarded-ForでもIPを取得することができました。※それは今のバージョンだからなのでしょうか。

で、以前はこの運用を HTTP で行っていました。
今回はSSLを利用した、HTTPSでの運用でクライアントのIPを取得したかったのです。

結果的に、HTTPSではクライアントの生IPを取得することはできませんでした。その場合にはSSLアクセラレーターなどを利用する必要があるようです。



stock_value at 14:28│Comments(3)技術:2017年 

この記事へのコメント

1. Posted by osamuya   2018年01月23日 00:57
3 突然のコメント失礼します。
IIJのGIOホスティングにてLB配下のIPアドレスをいろいろ取得してみましたが、
httpでは、"X-Cluster-Client-IP"と"X-Forwarded-For"の両方で取得できました。リクエストヘッダーの中をダンプすると入ってくるので、それを取得した感じです。
ですがhttpsではリクエストヘッダの中身は、"X-Cluster-Client-IP"も"X-Forwarded-For"もない状態でしてリクエストヘッダからは取得できなかったのですが、ssl.confの中でのアクセスログのカスタマイズでは、 %{X-Forwarded-For}iでLBにアクセスしたごろーバルIPが取得できました。
ちょっと理屈が私もわからないのですが、私もSSLの際のIPを取得したく四苦八苦しているところです。
もし何かしら新しい情報ありましたら共有していただきたく。。
よろしくお願いします。
2. Posted by osamuya   2018年01月23日 01:19
連投すみません。。
今みていたら、LB配下でも$_SERVER["REMOTE_ADDR"]でクライアントのグローバルIPが取得できているっぽいのです。。
ssl.confの中で、
RemoteIPHeader X-Forwarded-For
という記述をしていて、RemoteIPHeaderというディレクティブで$_SERVER["REMOTE_ADDR"]にX-Forwarded-Forを格納しているっぽいです。
(すみません。ちゃんと検証できておりません。。)
3. Posted by syo@管理者   2018年02月06日 16:11
コメントありがとうございます。
まず僕自身は今はIIJ-GIOのサーバーをメンテナンスしていないので、状況がわかりません。

RemoteIPHeader については、 Apache2.4系で mod_remoteip というモジュールがあるようです。僕はこのモジュールを利用していなかったため動作の細かい仕様はわかりません。

LBの種類などによっても、この環境変数は異なるようですね。AWSでも%{X-Cluster-Client-IP}iでいけるようです。

・・すいません。ほとんどたいした情報ありませんでした・・。

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔