启用SSL后Jupyter频繁SSL错误:如何阻止定期HTTP请求
Jupyter Notebook启用SSL后定期SSL错误的问题解决
问题背景
使用官方jupyter/datascience-notebook:latest镜像搭建Jupyter Notebook,在.jupyter/jupyter_notebook_config.py中配置SSL及相关参数:
c.NotebookApp.certfile = '/home/jovyan/.jupyter/server.crt' c.NotebookApp.keyfile = '/home/jovyan/.jupyter/server.key' c.NotebookApp.ip = '*' c.NotebookApp.open_browser = False
配置后Jupyter服务器每15秒出现如下SSL错误:
[W 2022-11-26 08:37:44.071 ServerApp] SSL Error on 43 ('127.0.0.1', 33610): [SSL: HTTP_REQUEST] http request (_ssl.c:997)
推测容器内有进程定期发送HTTP请求到Jupyter服务器,以下是对应问题的解决方案:
1. 该HTTP请求是什么,能否阻止?
请求来源
这个定期请求大概率是Jupyter Server自身的健康检查机制(内部心跳/健康探测),也可能是镜像内置的监控脚本或扩展(如nbserverproxy)发起的请求。
可以在容器内通过tcpdump抓包确认请求内容:
tcpdump -i lo port 8888 -A
抓包后能看到请求的具体路径(比如/api/health),从而确定来源。
阻止方法
- 禁用Jupyter健康检查:如果是Jupyter自身的健康检查,在
jupyter_notebook_config.py中添加以下配置关闭:c.ServerApp.health_check_interval = 0 # 0表示完全禁用健康检查 - 停止第三方进程:如果是容器内其他进程(如cron任务、监控脚本),执行以下步骤排查并停止:
- 查看当前运行的进程:
ps aux - 查看定时任务:
crontab -l - 找到对应进程后,使用
kill <PID>停止,或删除相关定时任务。
- 查看当前运行的进程:
2. 若无法阻止,能否让它改用HTTPS请求?
可以通过以下方式调整:
- 配置Jupyter内部组件:如果是Jupyter自身的扩展或组件发起的请求,检查相关配置项,将内部请求地址从
http://localhost:8888改为https://localhost:8888,确保和SSL监听的端口一致。 - 修改第三方脚本/进程:如果是自定义脚本或第三方工具,直接修改请求地址为HTTPS;若使用自签名证书,需添加忽略证书验证的参数:
- curl命令:
curl -k https://localhost:8888/xxx - Python请求:
requests.get("https://localhost:8888/xxx", verify=False)
- curl命令:
- 统一base_url配置:确保Jupyter的
c.NotebookApp.base_url(若设置)和请求地址的路径一致,避免协议不匹配。
内容的提问来源于stack exchange,提问作者Alvin Guan
相关产品推荐
相关产品推荐

