web-dev-qa-db-ja.com

X-Forwarded-Tomcat7アクセスログに表示されない場合

ELBの背後で実行されているTomcatでリモートクライアントIPを印刷しようとしていますが、何らかの理由でアクセスログに印刷されていません。私のelb構成は次のとおりです:80-> 8080 443-> 8080 Tomcat7を実行しており、server.xmlでのホスト構成は次のとおりです。

<Host name="localhost"  appBase="webapps"
        unpackWARs="true" autoDeploy="true">

    <!-- SingleSignOn Valve, share authentication between web applications
         Documentation at: /docs/config/Valve.html -->
    <!--
    <Valve className="org.Apache.catalina.authenticator.SingleSignOn" />
    -->

    <!-- Remote IP Valve -->
 <Valve className="org.Apache.catalina.valves.RemoteIpValve" />

    <!-- 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"
           prefix="localhost_access_log." suffix=".txt"
           pattern="%{X-Forwarded-For}i %l %u %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot;" />

  </Host>

パターン「combined」でも試してみました。

アクセスログ行のサンプル:

- - - [18/Feb/2013:19:12:33 +0000] "GET URL HTTP/1.1" 200 1704 "remote URL" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17"

ここで助けていただければ幸いです。ありがとう

2
Amnon

これは、RemoteIpValveをサポートする「一般的な」ログ形式と最も正確に同等であることがわかりました。

"%{org.Apache.catalina.AccessLog.RemoteAddr}r %l %u %t &quot;%r&quot; %s %b &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot;"
3
user329772

次のことを試してください。

    <Valve className="org.Apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="localhost_access_log." suffix=".txt"
           pattern="combined"
           resolveHosts="false"/>

デフォルトではプライベートアドレスを無視しているようです。私の場合、外部に面したELBでIPを取得しますが、内部ELBS(両側に10.x.x.xアドレスがある)は、同じ構成を使用するアドレスに対して-を表示します。

0
TheFiddlerWins