web-dev-qa-db-ja.com

デバッグのためにnginxログに変数を出力する方法

Nginxをテストしていて、変数をログファイルに出力したい。どうすればそれができ、どのログファイルにアクセスできますか(アクセスまたはエラー)。

92
lulalala

ヘッダーを介してnginx変数の値を送信できます。開発に便利です。

add_header X-uri "$uri";

ブラウザの応答ヘッダーに次のように表示されます:

X-uri:/index.php

私は時々、地元の開発中にこれを行います。

また、サブセクションが実行されているかどうかを通知するのにも便利です。句の中に入れて、慣れているかどうかを確認します。

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
    add_header X-debug-message "A static file was served" always;
    ...
}

location ~ \.php$ {
    add_header X-debug-message "A php file was used" always;
    ...
}

したがって、 http://www.example.com/index.php のようなURLにアクセスすると、 http://www.example.com/img/my-にアクセスしているときに後者のヘッダーがトリガーされますducky.png は前のヘッダーをトリガーします。

159
yuvilio

HTTP応答として単純な文字列を返すことができます。

location /
{
    return 200 $document_root;
}

ページのヘッダーを変更したくない場合は、.htmlで終わるページにアクセスする必要があることに注意してください。

43
Thomas Decaux

関心のある変数をログに記録する log_format ディレクティブを使用して、カスタムアクセスログ形式を設定できます。

19
mgorven

別のオプションは、nginxをビルドするときに echoモジュール を含めるか、または OpenResty をインストールすることです。

その後、次のようなステートメントを使用して構成を簡単に振りかけることができます。

echo "args: $args"
7
Mark Evans