2

我在 HTTPS 模式下设置 Sentry 服务器时遇到问题。Raven(Sentry 客户端)时不时地将这个错误消息写入日志文件:

Unable to reach Sentry log server: <urlopen error [Errno 8] _ssl.c:504: EOF occurred in violation of protocol> (url: https://$(valid_server)/)

Web UI 工作正常。绝大多数来自 Raven 的消息都被很好地接收,Sentry 将它们处理成可用的输出。但是,由于这些错误,有时会丢失一些东西。

我试图弄清楚这一点,但死胡同似乎紧随其后。基本上看起来很像这样:

Python Requests requests.exceptions.SSLError: [Errno 8] _ssl.c:504: EOF 发生违反协议

但是,当使用 TLS 1.2 用类似的 s_client 查询测试我的 Sentry 服务器时,它会导致一个有效的会话,这与那里的示例不同。

这也与此无关,因为未使用 SNI:

python-requests 2.0.0 - [Errno 8] _ssl.c:504: EOF 发生违反协议

我无法连贯地重现错误。Raven 的测试通过并且没有严重错误,直到日志中弹出错误。

我的设置是:Python 2.7.5 中的 Raven 4.2.1,Nginx 1.6.0 作为处理 HTTPS 的反向代理,最后是带有默认 Gunicorn 0.17.4 的 Sentry 6.4.4。Nginx 配置与官方文档 ( http://sentry.readthedocs.org/en/latest/quickstart/nginx.html )非常相似,但由于 HTTPS 而做了一些更改。

4

1 回答 1

3

我遇到了同样的问题,并通过安装以下依赖项来解决它:

在 Ubuntu 上:

sudo aptitude install libffi-dev

然后通过点子:

pip install pyopenssl ndg-httpsclient pyasn1

问题似乎是 Python 2.X 不支持开箱即用的 SNI(TLS 需要),如此处所述

于 2014-06-12T09:42:12.100 回答