Bob's Blog

Python、Web开发、测试框架、自动化平台、机器学习等

返回上页首页

Jupyter Notebook在nginx中无法配置为二级页面的解决办法



在网站刚建立的时候,就已经搭建了Jupyter Notebook的运行环境。不过之前只是开放为8888的端口,无法像博客那样有个正常点的名字。毕竟域名都有了,长时间输入端口访问实在是有点强迫症发作了,于是打算像本博客网址一样配置一个正常的url,就像现在的https://www.byincd.com/jupyter。

自己弄的两个博客都是用的nginx,于是决定也把Jupyter配置在nginx里。但是配置时发现只能作为根目录来访问,否则就会报404的错误。哪怕改为location ~ /jupyter这种也不行。如下所示。

location / {
    proxy_pass http://127.0.0.1:8888;
    proxy_set_header Host $host;
}

location ~ /api/kernels/ {
    proxy_pass http://127.0.0.1:8888;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Upgrade "websocket";
    proxy_set_header Connection "Upgrade";
    proxy_read_timeout 86400;
}

location ~ /terminals/ {
    proxy_pass http://127.0.0.1:8888;
    proxy_set_header Host $host;
    proxy_http_version 1.1;
    proxy_set_header Upgrade "websocket";
    proxy_set_header Connection "Upgrade";
    proxy_read_timeout 86400;
}

 

我需要的是作为二级目录访问的啊,于是查阅了相关资料,找到了解决办法。

先修改jupyter notebook的配置文件jupyter_notebook_config.py。增加下面两行并重启jupyter notebook。


c.NotebookApp.notebook_dir = u'/path/jupyter'
c.NotebookApp.base_url = '/jupyter/'

然后在nginx的site-available的default文件中增加如下内容,重启nginx,即可用https://www.byincd.com/jupyter访问jupyter notebook啦。

location /jupyter/ {
    proxy_pass http://127.0.0.1:8888;
    proxy_set_header Host $host;
    proxy_set_header X-Real-Scheme $scheme;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    proxy_read_timeout 120s;
    proxy_next_upstream error;
}

 

下一篇:  mac配置android sdk环境
上一篇:  手机app测试策略

共有5条评论

添加评论

asdasd
2020年9月12日 21:02
salam
lin
2020年5月12日 17:38
楼主这个正解! 成功配置好了
Bo
2019年9月4日 10:44
@wadewu 这里的值是你配置的jupyter启动的根目录路径,比如c.NotebookApp.notebook_dir = u'/home/debug/jupyter'
wadewu
2019年9月4日 10:28
你好,请问c.NotebookApp.notebook_dir = u'/path/jupyter',这一项应该填什么呢?
wadewu
2019年9月4日 10:28
你好,请问c.NotebookApp.notebook_dir = u'/path/jupyter',这一项应该填什么呢?