使用情景如果是,连接跳板机(跳板机有足够的权限),然后再连接内网的 jupyter notebook 如果要简单,可以直接使用 vscode, 添加端口转发。
但这个方法如果连接不稳定,则会反复遇到网络断开的情况,vscode 重新建立转发比较慢,整个流程会比较麻烦。那么,可以考虑在跳板机部署反向代理。
Nginx安装配置
- 安装配置 Nginx
sudo apt install nginx
- 添加反向代理配置
修改 nginx.conf
vim /etc/nginx/nginx.conf
修改 http
配置
- 注释 default 配置(如果不需要)
< include /etc/nginx/sites-enabled/*;
---
> # include /etc/nginx/sites-enabled/*;
- 添加 proxy_http_version 1.1; (有必要)
> proxy_http_version 1.1;
配置反向代理
vim /etc/nginx/conf.d/proxy.conf;
根据实际地址,编辑配置:
upstream notebook{
server 192.168.0.1:8888;
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 8888;
location / {
proxy_pass http://notebook;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# websocket headers
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
配置 jupyter
需要配置jupyter监听对应ip地址,以及允许所有Orgin的包
配置 ServerApp.ip
和 ServerApp.allow_origin
jupyter notebook --ServerApp.ip=0.0.0.0 --ServerApp.allow_origin=*
问题说明
- 如果不设定
--ServerApp.allow_origin=*
, 那么大概率会遇到403 forbidden
错误 - 如果不设定
proxy_http_version 1.1;
, 那么大概率会遇到101 switching protocols
错误