フロントエンドnginxの場合、バックエンドtomcatに実際のIPを記録させます

nginx + tomcatのアーキテクチャでは、バックエンドtomcat構成がデフォルトのままである場合、tomcatアクセスログには、実際のアクセスIPではなくフロントエンドnginxのIPアドレスが記録されます。したがって、nginxとtomcatを次のように構成する必要があります。


1)nginx構成

……。

proxy_set_headerホスト$ host;

proxy_set_header X-Real-IP $ remote_addr;

proxy_set_header X-Forwarded-For $ proxy_add_x_forwarded_for;

……。


2)Tomcat構成

……。

        <Valve className = "org.apache.catalina.valves.AccessLogValve" directory = "/ data / logs / tomcat"

               prefix = "search_access" Supplement = "。log"

               pattern = "%{X-FORWARDED-FOR} i%l%u%t%r%s%b%D%{User-Agent} i" resolveHosts = "false" />

……。


3)ログ効果

10.0.11.162 --- [2015年11月12日:11:22:11 +0800] GET /elesearch-search-api/search/restaurant.json?start=0&end=1&lbs=POINT%28120.285468902%2031.5033700783%29&rt=id&tq= id:328864 HTTP / 1.0 200102 2 python-requests / 2.4.3 CPython / 2.7.5 Linux / 3.10.0-229.11.1.el7.x86_64

10.0.50.54 --- [12 / Nov / 2015:11:22:11 +0800] GET /elesearch-search-api/search/restaurantv5home.json?rt=id%2Cdelivery_price&lbs=POINT%28120.387601+36.273438%29&end=500&uid= 22454922&start = 0&from = webapi HTTP / 1.0 200 6404 11 python-requests / 2.7.0 CPython / 2.7.5 Linux / 3.10.0-229.el7.x86_64

10.0.40.91 --- [2015年11月12日:11:22:11 +0800] GET /elesearch-search-api/search/restaurant.json?start=0&end=1&lbs=POINT%28116.316306833%2039.9776800442%29&rt=id&tq= id:376608 HTTP / 1.0 200 119 3 python-requests / 2.4.3 CPython / 2.7.5 Linux / 3.10.0-229.11.1.el7.x86_64


ここでは、主に、ログの出力形式を指定するために使用されるパターン構成セクションについて説明します。有効なログ形式モードは、次のコンテンツ、次の文字列で確認できます。対応する情報は、指定された応答コンテンツに置き換えられます。

%A-リモートIPアドレス

%A-ローカルIPアドレス

%B-HTTPヘッダーを含まない、送信されたバイト数、またはバイトが送信されなかった場合は「-」

%B-HTTPヘッダーを除く、送信されたバイト数

%H-リモートホスト名

%H-同意を要求する

%L(小文字のL)-identdから論理ユーザー名をリモートします(常に「-」を返します)

%M-リクエストメソッド

%P-ローカルポート

%Q-クエリ文字列(存在する場合は「?」の前に付けます。存在しない場合は空の文字列です

%R-最初の行の要件

%S-応答のHTTPステータスコード

%S-ユーザーセッションID

%T-一般的なログ形式の日付と時刻

%U-リモートユーザー認証

%U-要求されたURLパス

%V-ローカルサーバー名

%D-要求を処理する時間(ミリ秒単位)

%T-リクエストを処理する時間(秒単位)

%I(大文字のi)-現在のリクエストのスレッド名


さらに、次のエイリアスを指定して、一般的に使用されるモードの1つとして設定できます。

共通-%h%l%u%t "%r"%s%b

結合-%h%l%u%t "%r"%s%b "%{Referer} i" "%{User-Agent} i" 


さらに、要求要求のクエリパラメータ、セッションセッション変数の値、Cookie値、またはHTTP要求/応答ヘッダーコンテンツの変数値をログファイルに書き込むこともできます。

これは、Apacheの構文をモデルにしています。

%{XXX} i xxxは着信ヘッダーを表します(HTTPリクエスト)

%{XXX} o xxxは、発信応答ヘッダー(Http Resonse)を表します

%{XXX} cxxxは特定のCookie名を表します

%{XXX} r xxxは、ServletRequest属性名を表します

%{XXX} s xxxは、HttpSessionの属性名を表します


おすすめ

転載: blog.51cto.com/14895198/2548044