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の属性名を表します