code up

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

アクセスログに送信元のIPアドレスを出す

AWSにて、ELBからのリクエストをEC2のApache httpd経由で最終的にTomcatで受け取っている。ロードバランサとリバースプロキシの構成。

この構成でTomcatのアクセスログに送信元のIPアドレスを出力するずばりな方法が見つからなかったので、試してうまくできた方法を記録。

以下はconf/server.xmlの設定値だけど、context.xmlでも試してないけどいけるでしょう、たぶん。

<Valve className="org.apache.catalina.valves.RemoteIpValve"
        internalProxies="10\.\d{1,3}\.\d{1,3}\.\d{1,3}" />

<!-- 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" />

RemoteIpValverequestAttributesEnabledの両方の設定をすればいいみたい。

EC2のTomcat(7.0.27)で確認。

Apache httpdの設定

以下のようにhttpd.confあたりにかけばApacheのログファイルのIPアドレスの部分をELBからのX-Forwarded-Forの値に変えてくれる。

#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
#LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b" common
関連記事
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。