LoginSignup
4
4

More than 5 years have passed since last update.

nginxのリバースプロキシー先のサーバーの挙動がおかしい時にログをとる方法

Last updated at Posted at 2018-12-18

概要

リバースプロキシーにnginxを使っている事例で、HTTPSのリクエストが強制的にHTTPリクエストされてしまう現象がありました。

リバースプロキシーの設定か、アップストリームサーバーの応答がおかしいのか、調査するためのログの取り方をまとめます。

手順

  • 下記「設定ファイルの修正方法」の通り設定ファイルを修正
  • nginxを再起動

設定ファイルの修正方法

nginx.conf
http {

:

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

+    log_format upstreamlog '[$time_local] $remote_addr $host $upstream_addr '
+                           '$upstream_cache_status $upstream_status `
+                           `$upstream_http_location $request';

:

}

conf.d/xxxx.conf
server {
:
     access_log /var/log/nginx/xxxx_access.log main;
+    access_log /var/log/nginx/xxxx_upstream.log upstreamlog;
:
}

ログフォーマットの解説

変数名 意味
$time_local ログが記録されたローカル時刻
$remote_addr クライアント端末のアドレス
$host 次の順番で決まり記録される:リクエスト行のホスト名、リクエストのヘッダー行の"Host"からのホスト名、リクエストにマッチしたサーバー名。
$upstream_addr アップストリームサーバーのIPアドレスとポートもしくはUNIXドメインソケットが記録されます。リクエストの処理の間に複数のサーバーが応答した場合はカンマ区切りで記録されます。
例: 192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock
もし、X-Accel-Redirect か error_pageにより、あるサーバーグループから別のサーバーグループへ内部リダイレクトががあった場合は、異なるサーバーグループのサーバーアドレスはコロンで区切られます。
例:192.168.1.1:80, 192.168.1.2:80, unix:/tmp/sock : 192.168.10.1:80, 192.168.10.2:80
サーバーが選択できなかった場合は、サーバーグループの名前が記録されます。
$upstream_cache_status レスポンスのキャッシュのステータスが記録されます。ステータスは次のどれかです:MISS,BYPASS,EXPIRED,STALE,UPDATING,REVALIDATEDもしくはHIT
$upstream_status アップストリームサーバーからの応答のステータスコードを記録します。変数$upstream_addrのように、複数のサーバーからの複数の応答のステータスコードはカンマとコロンで分けて記録されます。サーバーが選択されなかった場合は、変数は 502(Bad Gateway)ステータスコードには保存されます。
$upstream_http_location アップストリームサーバーからの応答のヘッダを記録します。応答のヘッダServerは、$upstream_http_server変数で記録できます。ヘッダフィールド名から環境変数の変換ルールは、$http_プレフィックスからのものと同じです。最後のサーバーからの応答のヘッダーの項目のみが記録されます。
$request もとのリクエスト行の全体が記録されます

関連資料

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4