如何在nginx日志中输出变量进行调试

我正在测试 nginx,希望将变量输出到日志文件。我该怎么做,输出到哪个日志文件(访问或错误)。

解决办法

你可以通过头信息发送nginx变量值。便于开发。

语言:nginx -->

add_header X-uri "$uri";

您将在浏览器的响应标头中看到这些内容:

语言:nginx -->

X-uri:/index.php

在本地开发过程中,我有时会这样做。

它还能方便地告诉你某个分节是否被执行。只需在子句中撒上它,就能知道它们是否被使用。

语言:nginx -->

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 这样的网址会触发后一个标头,而访问 http://www.example.com/img/my-ducky.png 则会触发前一个标头。

评论(3)

您可以使用 log_format指令设置自定义访问日志格式,以记录您感兴趣的变量。

评论(4)

另一种方法是在构建nginx时包含echo模块,或者安装OpenResty,它是捆绑了大量扩展(如echo)的nginx。

然后,你只需在配置中加入以下语句即可:

echo "args: $args"
评论(2)