我在HTTPS模式下设置哨兵服务器时有麻烦。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 .exceptions. sslerror: [Errno 8] _ssl.c:504: EOF occurred in violation of protocol
但是,当使用TLS 1.2使用类似的s_client查询测试我的Sentry服务器时,它会导致一个有效的会话,这与上面的示例不同。
这也不是关于这个,因为SNI没有使用:
python-requests 2.0.0 - [Errno 8] _ssl.c:504: EOF发生违反协议
我无法连贯地重现错误。Raven的测试通过了,没有什么严重的错误,直到日志中弹出一个错误。
我的设置是:Raven 4.2.1在Python 2.7.5, Nginx 1.6.0作为反向代理处理HTTPS,最后是Sentry 6.4.4与默认的Gunicorn 0.17.4。Nginx的配置与官方文档(http://sentry.readthedocs.org/en/latest/quickstart/nginx.html)非常相似,只是由于HTTPS做了一些修改。
我遇到了同样的问题,并通过安装以下依赖项来修复它:
在Ubuntu:sudo aptitude install libffi-dev
然后通过pip:
pip install pyopenssl ndg-httpsclient pyasn1
问题似乎是Python 2。X不支持开箱即用的SNI (TLS需要SNI),如下所述。