Jupyter Docker 图像内核断开连接 400 Apache 代理

问题描述 投票:0回答:0

我有一个 Jupiter notebook 在 AWS 的 Ubuntu 服务器上运行。

docker run -d -p 8880:8888 jupyter/all-spark-notebook

我能够很好地看到 Web 界面,并且我已经进入容器并获得了登录令牌。这一切看起来都很好。然而,在网络界面的底部它说

Python 3 (ipykernel)|Disconnected

运行以下行:

docker logs --tail -50 [container ID]

我得到:

[I 2023-04-24 17:57:38.251 ServerApp] Kernel started: 26f0e339-31c1-4fc6-8bf0-4208454c652f
[I 2023-04-24 17:57:38.252 ServerApp] Kernel shutdown: 3b58c1be-aba7-4c0a-9082-f4cfb1252c02
[W 2023-04-24 17:57:42.447 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=41770cc1-2ec4-4827-8769-25f415657ee8 ([email protected]) 10.54ms referer=None
[W 2023-04-24 17:57:43.223 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=0ab9b092-1a9a-4e13-a5b6-c18a343b7969 ([email protected]) 2.23ms referer=None
[W 2023-04-24 17:57:44.921 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:41770cc1-2ec4-4827-8769-25f415657ee8
[W 2023-04-24 17:57:44.922 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=41770cc1-2ec4-4827-8769-25f415657ee8 ([email protected]) 2.54ms referer=None
[W 2023-04-24 17:57:47.883 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:0ab9b092-1a9a-4e13-a5b6-c18a343b7969
[W 2023-04-24 17:57:47.884 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=0ab9b092-1a9a-4e13-a5b6-c18a343b7969 ([email protected]) 2.31ms referer=None
[W 2023-04-24 17:57:49.846 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:41770cc1-2ec4-4827-8769-25f415657ee8
[W 2023-04-24 17:57:49.847 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=41770cc1-2ec4-4827-8769-25f415657ee8 ([email protected]) 2.57ms referer=None
[W 2023-04-24 17:57:53.474 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:0ab9b092-1a9a-4e13-a5b6-c18a343b7969
[W 2023-04-24 17:57:53.475 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=0ab9b092-1a9a-4e13-a5b6-c18a343b7969 ([email protected]) 2.37ms referer=None
[W 2023-04-24 17:57:53.659 ServerApp] 400 GET /api/events/subscribe?token=[secret] ([email protected]) 1.24ms referer=None
[W 2023-04-24 17:57:54.621 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:41770cc1-2ec4-4827-8769-25f415657ee8
[W 2023-04-24 17:57:54.622 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=41770cc1-2ec4-4827-8769-25f415657ee8 ([email protected]) 2.47ms referer=None
[W 2023-04-24 17:57:56.044 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:0ab9b092-1a9a-4e13-a5b6-c18a343b7969
[W 2023-04-24 17:57:56.045 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=0ab9b092-1a9a-4e13-a5b6-c18a343b7969 ([email protected]) 2.61ms referer=None
[W 2023-04-24 17:58:01.418 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:0ab9b092-1a9a-4e13-a5b6-c18a343b7969
[W 2023-04-24 17:58:01.425 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=0ab9b092-1a9a-4e13-a5b6-c18a343b7969 ([email protected]) 14.36ms referer=None
[W 2023-04-24 17:58:02.346 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:41770cc1-2ec4-4827-8769-25f415657ee8
[W 2023-04-24 17:58:02.347 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=41770cc1-2ec4-4827-8769-25f415657ee8 ([email protected]) 2.54ms referer=None
[W 2023-04-24 17:58:03.855 ServerApp] 400 GET /api/events/subscribe?token=[secret] ([email protected]) 1.23ms referer=None
[W 2023-04-24 17:58:10.132 ServerApp] Replacing stale connection: 26f0e339-31c1-4fc6-8bf0-4208454c652f:0ab9b092-1a9a-4e13-a5b6-c18a343b7969
[W 2023-04-24 17:58:10.133 ServerApp] 400 GET /api/kernels/26f0e339-31c1-4fc6-8bf0-4208454c652f/channels?session_id=0ab9b092-1a9a-4e13-a5b6-c18a343b7969 ([email protected]) 2.55ms referer=None

我读到的内容表明这是我的 Apache2 反向代理和 Jupyter 使用 websockets 的问题。所以,我像这样配置代理(根据https://httpd.apache.org/docs/2.4/mod/mod_proxy_wstunnel.html):

<VirtualHost *:8888>

        ServerName host.domain.com

        <IfModule mod_ssl.c>
        SSLEngine on
        SSLCertificateFile /etc/letsencrypt/live/host.domain.com/cert.pem
        SSLCertificateKeyFile /etc/letsencrypt/live/host.domain.com/privkey.pem
        SSLCertificateChainFile /etc/letsencrypt/live/host.domain.com/fullchain.pem
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyVia On

        ProxyPass / http://localhost:8880/
        ProxyPassReverse / http://localhost:8880/

        RewriteEngine on
        RewriteCond ${HTTP:Upgrade} websocket [NC]
        RewriteCond ${HTTP:Connection} upgrade [NC]
        RewriteRule ^/?(.*) "ws://localhost:8880/$1" [P,L]

#        RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
#        RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}
        </IfModule>

</VirtualHost>

重写模式已经启用。重启Apache后,没有任何变化。我得到相同的日志输出,但笔记本仍未连接到终端。如果我使用基本笔记本,结果相同。我错过了什么?

websocket jupyter-notebook reverse-proxy apache2.4
© www.soinside.com 2019 - 2024. All rights reserved.