今回はaipo7っていうのがあるらしいから、それでどうだということで・・・。
(あ、blogのタイトルに反してインストール先はUbuntuなのだが)
でこいつは、デフォルトインストールでport 81にtomcatが貼り付くのだけれど
聞くところによるとS◯ftBank系のキャリアではport 80/443は通るけど
port 81なんて遮断されてるらしい。まぁさもありなんなので
nginxでリバースプロキシさせることにした。
(なお、nginxはx-forwarded-forをつけて接続するように設定している。)
ところが、nginxのリバースプロキシの後ろに繋がれたaipo7の
イベント履歴でリモートIPがプロキシ自身のIPになってしまうのは管理上
(あるいは精神衛生上)よろしくないので調べてみた。
そして、どうせ忘れるのでメモ代わりに書いておく。
tomcat7ならRemoteIpFilterというのが使えるのだが、tomcat6にはそんなものはないので、RemoteIpValveで対応する。
tomcat/conf/server.xmlの末尾に
<Host name="localhost" appBase="webapps" 〜で始まるエントリーがある。
このエントリーの最後に
<!-- valve start -->
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="x-forwarded-for"
protocolHeader="x-forwarded-proto"
internalProxies="10\.10\.2\.27" />
<!-- Access log processes all example.
Documentation at: /docs/config/valve.html
Note: The pattern used is equivalent to using pattern="common" -->
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
rotatable="false"
prefix="localhost_access_log"
suffix=".txt"
requestAttributesEnabled="true"
pattern="combined" />
<!-- valve end -->
</Host>
</Engine>
</Service>
</Server>
となるように追加する。(追加するのは valve startからvalve endの部分だ)
上の例ではInternal proxyのIPアドレスが 10.10.2.27になっているので、
それぞれの事例に合わせて直すこと。但しピリオドは正規表現的にバックスラッシュで
エスケープすること。
複数書きたければ
internalProxies="192\.168\.0\.10|192\.168\.0\.11"
のように書ける。
0 件のコメント:
コメントを投稿