我有一个网站,是访问许多不同的移动设备和嵌入式设备。
我经常遇到这样的问题,一些设备无法连接。
原因可以是:
由于设备位于远程位置,因此没有容易访问的日志--我希望能够分析nginx日志中的此类问题。
我可以通过增加要调试的错误日志日志级别来做到这一点。
error_log /var/log/nginx/errors_with_debug.log debug;
然而,这个日志包含了很多我不感兴趣的东西。
是否只有当ssl连接被拒绝但所有其他情况下都有正常的错误日志级别时,才能记录详细信息?
到目前为止,我启用了debug
日志,要求有问题的远程用户连接和记录跟踪,禁用调试级别,重新加载nginx,然后分析获得的跟踪。
事实上,如果我能够记录任何由于SSL问题而无法连接的客户端的日期和ip地址,我已经得到了帮助。
理想情况下,我还想记录原因,但是我知道,由于SSL而尝试了连接,但是失败了,这将是非常有帮助的。
发布于 2020-04-11 21:59:04
您提到的所有SSL握手错误都由nginx在info
级别记录,因此不需要启用调试。
您没有提到您使用的是哪个发行版,但是现在大多数系统都附带了SystemD,因此将日志重定向到标准错误:
error_log stderr info;
或syslog:
error_log syslog:server=/dev/log info;
将允许系统d-日志捕获所有的Nginx日志并管理它们的大小。一个简单的:
journalctl -u nginx.service -a -p info
将允许您列出高于info
级别的所有调试消息(假设您使用syslog)。
如果某些客户端需要更多数据,可以使用Nginx的调试_连接:
events {
debug_connection 192.0.50.1;
...
}
正如您在问题中提到的,为所有客户端设置一个debug
日志级别肯定会产生大量的输出。如果需要启用调试,则可以在每个子系统级别上进行调试。虽然错误_日志的文档中没有记录它,但这个指令也接受debug
级别(cf )的更精细的细分。( 源代码):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;
发布于 2020-04-09 21:56:00
答:
B:
error_log syslog:server=unix:/var/log/nginx.sock调试;
https://serverfault.com/questions/1010681
复制相似问题