首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尼吉克斯。如何在不破坏服务器日志的情况下记录ssl错误

尼吉克斯。如何在不破坏服务器日志的情况下记录ssl错误
EN

Server Fault用户
提问于 2020-04-03 01:33:10
回答 2查看 3.8K关注 0票数 5

我有一个网站,是访问许多不同的移动设备和嵌入式设备。

我经常遇到这样的问题,一些设备无法连接。

原因可以是:

  • 这个设备不能识别某个CA
  • 这个设备太老了,需要一个更老的协议TLS1.1
  • 这个设备需要一个过时的密码算法,或者仅仅是一个密码算法,这是我没有提供给服务器conf的。

由于设备位于远程位置,因此没有容易访问的日志--我希望能够分析nginx日志中的此类问题。

我可以通过增加要调试的错误日志日志级别来做到这一点。

代码语言:javascript
运行
复制
error_log  /var/log/nginx/errors_with_debug.log debug;

然而,这个日志包含了很多我不感兴趣的东西。

是否只有当ssl连接被拒绝但所有其他情况下都有正常的错误日志级别时,才能记录详细信息?

到目前为止,我启用了debug日志,要求有问题的远程用户连接和记录跟踪,禁用调试级别,重新加载nginx,然后分析获得的跟踪。

事实上,如果我能够记录任何由于SSL问题而无法连接的客户端的日期和ip地址,我已经得到了帮助。

理想情况下,我还想记录原因,但是我知道,由于SSL而尝试了连接,但是失败了,这将是非常有帮助的。

EN

回答 2

Server Fault用户

回答已采纳

发布于 2020-04-11 21:59:04

您提到的所有SSL握手错误都由nginx在info级别记录,因此不需要启用调试。

您没有提到您使用的是哪个发行版,但是现在大多数系统都附带了SystemD,因此将日志重定向到标准错误:

代码语言:javascript
运行
复制
error_log stderr info;

或syslog:

代码语言:javascript
运行
复制
error_log syslog:server=/dev/log info;

将允许系统d-日志捕获所有的Nginx日志并管理它们的大小。一个简单的:

代码语言:javascript
运行
复制
journalctl -u nginx.service -a -p info

将允许您列出高于info级别的所有调试消息(假设您使用syslog)。

如果某些客户端需要更多数据,可以使用Nginx的调试_连接

代码语言:javascript
运行
复制
events {
    debug_connection 192.0.50.1;
    ...
}

正如您在问题中提到的,为所有客户端设置一个debug日志级别肯定会产生大量的输出。如果需要启用调试,则可以在每个子系统级别上进行调试。虽然错误_日志的文档中没有记录它,但这个指令也接受debug级别(cf )的更精细的细分。( 源代码):debug_coredebug_allocdebug_mutexdebug_eventdebug_httpdebug_maildebug_stream。您对debug_event级别感兴趣,但是可以在error_log指令中添加几个,例如:

代码语言:javascript
运行
复制
error_log syslog:server=/dev/log debug_http debug_event;
票数 3
EN

Server Fault用户

发布于 2020-04-09 21:56:00

答:

  1. 启用“调试”
  2. 创建管道而不是日志文件(确保它不会因日志旋转而受损)
  3. 在后台创建侦听器(cat awk、grep、sed等)
  4. 重新启动nginx

B:

error_log syslog:server=unix:/var/log/nginx.sock调试;

票数 3
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1010681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档