NWNU-Sun | 技术沉思录

代码是诗,bug是谜

   ::  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、背景

公司AI产品部署了Jupyter服务,url为 http://192.168.2.25:9999,实际的使用是将页面嵌入到产品服务,但是存在安全隐患,知道Jupyter的端口,即使不通过产品跳转,也能访问到

二、解决方式

开启防火墙,隐藏9999端口,通过nginx代理,产品配置nginx信息即可,具体配置如下。

nginx.conf

location /jupyter {
    proxy_pass              http://127.0.0.1:9999;
    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_http_version      1.1;
    proxy_set_header        Upgrade $http_upgrade;
    proxy_set_header        Connection "upgrade";
    proxy_redirect          off;
}

jupyter_lab_config.py

c.NotebookApp.base_url = '/jupyter'

c.NotebookApp.base_url 配置项作用

设置基础 URL 路径:c.NotebookApp.base_url 用于指定 Jupyter Notebook 服务器的基础路径。例如,如果你设置了 c.NotebookApp.base_url = '/jupyter',那么所有的 Jupyter Notebook URL 都会以 /jupyter 开头,比如 http://localhost:8888/jupyter。

反向代理使用:当你将 Jupyter Notebook 服务器放在反向代理(如 Nginx 或 Apache)后面时,反向代理服务器可能会将所有请求路由到特定的路径。例如,你可以将 Jupyter Notebook 配置为在 /jupyter 路径下运行,这样就可以将其和其他应用程序(如网站或其他服务)放在同一域名下。

测试发现,只有通过访问 http://192.168.2.94:9999/jupyter 才可以访问。既然通过修改base_url 可以隐藏实际资源路径,其实完全用不着nginx,可以将basr_url的值设置复杂一点或者加密即可。

posted on 2025-03-11 18:00  匿名者nwnu  阅读(135)  评论(0)    收藏  举报