You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

无法通过Nginx反向代理对外提供Jupyter Notebook服务求助

解决Nginx反向代理Jupyter Notebook的HTTP访问问题

看起来你的配置里有两个核心问题导致访问异常,咱们一步步来修正:

问题1:Jupyter的base_url配置错误

你把base_url设成了完整域名jupyterdomain.com,但这个参数应该是路径前缀(比如/jupyter),而非域名。Jupyter用它来标识自身服务的路径,域名是由Nginx负责处理的部分。

修正后的jupyter_notebook_config.py关键配置:

# 将base_url改为路径前缀,示例用/jupyter
c.NotebookApp.base_url = '/jupyter'
# 其余配置保持原有正确设置
c.NotebookApp.ip = '127.0.0.1'
c.NotebookApp.port = port  # 替换为你实际使用的端口号
c.NotebookApp.password = u'sha1:passwordhash'
c.NotebookApp.notebook_dir = u'/home/user/.jupyter'
c.NotebookApp.allow_origin = '*'
c.NotebookApp.open_browser = False

重启Jupyter后,日志应该会显示类似:

[I 15:35:22.626 NotebookApp] http://127.0.0.1:port/jupyter/

问题2:Nginx的location配置不匹配

你当前的location /home/user/.jupyter指向的是本地文件目录,这完全不符合反向代理的逻辑——Nginx的location需要匹配Jupyter的base_url路径,再将请求转发到Jupyter服务地址。

修正后的Nginx配置:

server{
 listen 80;
 server_name jupyterdomain.com;

 # 匹配Jupyter的base_url路径,对应上面设置的/jupyter
 location /jupyter {
     proxy_pass http://localhost:port;  # 替换为你实际的Jupyter端口
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header Host $http_host;
     proxy_http_version 1.1;
     proxy_redirect off;
     proxy_buffering off;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection "upgrade";
     proxy_read_timeout 86400;
 }

 # 可选配置:访问根域名时自动跳转到Jupyter路径
 location / {
     return 302 /jupyter;
 }
}

验证步骤

  1. 重启Nginx使配置生效:sudo nginx -s reload
  2. 重启Jupyter Notebook服务
  3. 现在访问http://jupyterdomain.com会自动跳转到Jupyter登录页,或直接访问http://jupyterdomain.com/jupyter即可正常进入。

额外注意事项

  • 确保jupyterdomain.com已正确解析到虚拟机IP(本地测试可修改hosts文件)
  • 由于你使用Python2.7,若遇到奇怪问题可尝试升级Jupyter版本:pip install --upgrade jupyter
  • SSH隧道访问时,现在只需访问localhost:port/jupyter即可正常使用

内容的提问来源于stack exchange,提问作者Zisis Diamantis

火山引擎 最新活动