web-dev-qa-db-ja.com

nginxでのリクエストヘッダーのロギング

クライアントのリクエストからのカスタムヘッダーをログに記録したい。 「$ http_my_header」をlog_formatに追加しました。POSTリクエストに対しては適切に記録されます。一方、すべてのGETリクエストは、空の値で記録されます。

GETリクエストの例:

GET /pws HTTP/1.1
upgrade: websocket
connection: Upgrade
sec-websocket-key: XXXX
Host: XXXX
sec-websocket-Origin: XXXX
sec-websocket-version: 13
X-Plumbr-sessionId: XXXX
X-Plumbr-accountId: XXXX
X-Plumbr-build: SNAPSHOT

私のnginx log_formatには含まれています

"$http_x_plumbr_accountid" "$http_x_plumbr_build" 

GETリクエストのロギングヘッダーには特別な設定が必要ですか?

6
Nikem

これがどれだけ役立つかはわかりませんが、その価値のために、標準のリクエスト変数を介してリクエストヘッダーを設定し、IIS =サーバー、それらが正しく受信および解釈されました。これらの変数(または必要な変数)を利用して、Nginxのドキュメントを参照し、利用可能なすべての変数を確認することで、アクセスログに含めることで同じことができると思います。これが私が使っていたサーバーブロックです:

server {
        listen       8001;
        server_name  localhost;
        location / {
            proxy_set_header  x-client-IP      $remote_addr;
            proxy_set_header  x-forwarded-for  $proxy_add_x_forwarded_for;
            proxy_set_header  Host             $http_Host;
            proxy_pass        http://127.0.0.1:80/;
        }
}

ログ形式を設定し、ヘッダー値を作成または取得する場所に応じて、同じことが機能するはずです。リクエストタイプのロジックを使用することもできます。これは、GETが機能しているようで、POSTが予期しない動作をしている場合に確認する必要があります。

1
rubynorails