クライアント要求のカスタムヘッダーを記録したいと思います。私のlog_formatに "$http_my_header"を追加しましたが、POSTリクエストが正しく記録されます。一方、すべてのGETリクエストはnull値を記録します。
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リクエストのレコードヘッダに特別な設定が必要ですか?
答え1
これがどのように役立つかはわかりませんが、価値があるのは、標準の要求変数を介して要求ヘッダーを設定し、正しく受信および説明されている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が予期せず動作している場合は、これを確認することをお勧めします。