gel*_*ida 5 ssl nginx debugging logging
我有一个网站,它被许多不同的移动设备和嵌入式设备访问。
我经常遇到一些设备无法连接的问题。
原因可能是:
由于设备位于远程位置,没有易于访问的日志,我希望能够使用 nginx 日志分析此类问题。
我可以通过增加错误日志日志级别来调试来做到这一点。
error_log /var/log/nginx/errors_with_debug.log debug;
Run Code Online (Sandbox Code Playgroud)
然而,这个日志包含了很多我不感兴趣的东西。
只有在 ssl 连接被拒绝但所有其他情况下都有正常的错误日志级别时,有没有办法记录详细信息?
到目前为止,我启用了debug日志记录,让设备有问题的远程用户连接并记录跟踪,禁用调试级别,重新加载 nginx 并分析获得的跟踪。
事实上,如果我可以记录由于 SSL 问题而无法连接的任何客户端的日期和 IP 地址,我已经得到了帮助。
理想情况下,我也想记录原因,但知道,尝试连接但由于 SSL 失败将非常有帮助。
您提到的所有 SSL 握手错误均由 nginx 在某个级别记录info,因此您无需启用调试。
您没有提及您正在使用哪个发行版,但现在大多数系统都带有SystemD,因此将您的日志重定向到标准错误:
error_log stderr info;
Run Code Online (Sandbox Code Playgroud)
或系统日志:
error_log syslog:server=/dev/log info;
Run Code Online (Sandbox Code Playgroud)
将允许systemd-journald捕获所有 Nginx 日志并管理其大小。一个简单的:
journalctl -u nginx.service -a -p info
Run Code Online (Sandbox Code Playgroud)
将允许您列出以上info级别的所有调试消息(假设您使用系统日志)。
如果某些客户端需要更多数据,可以使用Nginx的debug_connection:
events {
debug_connection 192.0.50.1;
...
}
Run Code Online (Sandbox Code Playgroud)
正如您在问题中提到的,为所有客户端设置日志级别debug肯定会产生大量输出。如果您需要启用调试,您可以在每个子系统级别上进行。尽管error_log的文档中没有记录该指令,但该指令还接受更精细的级别细分debug(参见源代码):debug_core, debug_alloc, debug_mutex, debug_event, debug_http, debug_mail, debug_stream。您对级别感兴趣debug_event,但您可以在error_log指令中添加几个级别,例如:
error_log syslog:server=/dev/log debug_http debug_event;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1764 次 |
| 最近记录: |