我有一个网站,许多不同的移动设备和嵌入式设备都可以访问该网站。
我经常遇到一些设备无法连接的问题。
原因可能是:
- 设备无法识别某个 CA
- 设备太旧,需要旧协议 TLS1.1
- 该设备需要一个过时的加密算法或只是一个加密算法,我没有提供给我的服务器配置文件。
由于设备位于远程位置,因此没有易于访问的日志我希望能够使用 nginx 日志分析此类问题。
我可以通过将错误日志日志级别提高到调试来做到这一点。
error_log /var/log/nginx/errors_with_debug.log debug;
但是,此日志包含大量我不感兴趣的内容。
只有当 ssl 连接被拒绝但在所有其他情况下具有正常的错误日志级别时,是否有任何方法可以记录详细信息?
到目前为止,我启用了debug
日志记录,要求他们的设备有问题的远程用户连接并记录跟踪,禁用调试级别,重新加载 nginx,然后分析获得的跟踪。
事实上,如果我可以记录由于 SSL 问题而无法连接的任何客户端的日期和 IP 地址,我已经得到了帮助。
理想情况下,我还想记录原因,但我知道,尝试连接但由于 SSL 失败将非常有帮助。
A:
乙:
error_log syslog:server=unix:/var/log/nginx.sock 调试;
您提到的所有 SSL 握手错误都由 nginx 记录在一个
info
级别,因此您不需要启用调试。您没有提及您使用的是哪个发行版,但现在大多数系统都带有SystemD,因此将您的日志重定向到标准错误:
或系统日志:
将允许systemd-journald捕获所有 Nginx 日志并管理它们的大小。一个简单的:
将允许您列出以上
info
级别的所有调试消息(假设您使用 syslog)。如果某些客户端需要更多数据,可以使用Nginx的debug_connection:
正如您在问题中提到的,
debug
为所有客户端设置日志级别肯定会产生大量输出。如果您需要启用调试,您可以在每个子系统级别上进行。尽管error_log的文档中没有记录,但该指令还接受debug
级别的更精细细分(参见源代码):debug_core
,debug_alloc
,debug_mutex
,debug_event
,debug_http
,debug_mail
,debug_stream
。您对关卡感兴趣,但您可以在指令debug_event
中添加几个,例如:error_log