4

我试图配置 jupyterhub 代理来路由内容,my-host-ip/notebook但我无法找出解决方案。

我正在使用以下 Nginx 配置:

server {
        listen 80;
        server_name  localhost;

        location /notebook {
            proxy_pass http://localhost:8000;

            # proxy_set_header X-Real-IP $remote_addr;
            # proxy_set_header Host $http_host;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~* /(user[-/][a-zA-Z0-9]*)/(api/kernels/[^/]+/(channels|iopub|shell|stdin)|terminals/websocket)/? {
            proxy_pass http://localhost:8000;

            # proxy_set_header X-Real-IP $remote_addr;
            # proxy_set_header Host $http_host;
            # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            # WebSocket support
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_read_timeout 86400;

        }
    }
4

2 回答 2

3

我通过在 jupyterhub 配置文件中使用以下选项来解决此问题:

# Force the proxy to only listen to connections to 127.0.0.1 
c.JupyterHub.ip = '127.0.0.1'  
c.JupyterHub.base_url = u'/notebook'
于 2017-08-22T09:24:39.367 回答
1

仅当您的客户端计算机上有另一个代理配置时,此答案才有效(如果您在浏览器或操作系统上使用代理来访问互联网)。此失败可能是由于您的公司/学校/电信提供商管理不善的代理,原因在此处解释。

解决方案

设置一个自签名的 ssl 证书,以便 websocket 可以通过 TLS/SSL 连接进行隧道传输。由于您已经安装了 Nginx,这很容易。按照数字海洋上的指南快速设置免费的自签名 ssl 证书。

此外,您需要在 nginx websocket 配置中添加以下标头才能工作。

proxy_set_header Origin ""
于 2019-10-09T06:24:18.327 回答