nginx反向代理jupyter实践

 更新时间:2026年03月14日 10:01:11   作者:jerry-89  
文章讲述了如何配置Jupyter Notebook,包括打开配置文件和设置反向代理,反向代理配置中提到,指定HTTP版本为1.1是必要的,因为如果不加,Notebook将无法连接到内核并一直显示断开,此外,还提到了资源和浏览器禁止下载的问题

1.jupyter配置

打开配置文件 /home/jack/.jupyter/jupyter_notebook_config.py

2.反向代理配置

这个/jack/与上面添加的对应 

location  /jack/ {
        
        proxy_pass http://192.168.196.164:8888/jack/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        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";
        #这是代理网站的资源,可以查看但不能下载
        add_header Content-Disposition "inline";
        add_header X-Content-Type-Options "nosniff";
      
}

proxy_http_version 1.1显然意思是指定http版本为1.1, 但是为什么呢? 你自己试试不就知道了如果不加的话, 在Notebook中将无法连接到内核, 一直会显示disconnected.  

这个是资源禁止访问且禁止下载

 location ~ \.(zip|rar|sql|bak|gz|7z|py|pdf|doc|docx|xls|xlsx|out)$ {
        add_header Content-Disposition "inline";
        add_header X-Content-Type-Options "nosniff";
        #       return 404;
 
  }

浏览器禁止下载 

  location  /jack/ {
        #rewrite /jack/files/* /1111;
        rewrite /jack/files/* /404 permanent;
        #rewrite /jack/files/(.*)$ /404;
        proxy_pass http://192.168.206.25:8888/jack/;
        proxy_set_header Host $host;
        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";
        add_header Content-Disposition "inline";
       # add_header X-Content-Type-Options "nosniff";
       add_header X-Content-Type-Options "nosniff";
 
 }

例:

more /etc/nginx/conf.d/default.conf 
server {

  listen 443 ssl; # managed by Certbot
  ssl_certificate /etc/letsencrypt/live/ict-cloud.thupdi.com/fullchain.pem; # managed by Certbot
  ssl_certificate_key /etc/letsencrypt/live/ict-cloud.thupdi.com/privkey.pem; # managed by Certbot
  include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

  server_name  AA.BB.com;
  charset    utf-8;
  client_max_body_size 500m;
  # tomcat 81端口
  location / {
     proxy_pass http://127.0.0.1:81/;
  } 

   location /v2/ {
     proxy_pass http://IP:81/;
   } 

  # 由于81端口下有应用是以thcloud开头的,所以这个地方需要使用正则表达式匹配
  location /thcloud/ {
    proxy_pass http://127.0.0.1:8081/thcloud/;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "Upgrade";  
    proxy_read_timeout 5m;
  }
 
  location /new/thcloud/ {
    proxy_pass http://172.30.11.155:8081/thcloud/; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade,keep-alive";
    tcp_nodelay on;
    proxy_http_version 1.1;
    proxy_buffering off;
    proxy_request_buffering off;
    proxy_set_header X-Accel-Buffering no;
    proxy_max_temp_file_size 0; 
  }

  location /sjzl/ {
    proxy_pass http://IP:9090/sjzl/;
  }

  location /geoserver/ {
     proxy_pass http://IP:8080/geoserver/;
  }
 
  location /jupyter {
     proxy_pass http://IP:8000/;
  }
  
  location /hub {
     proxy_pass http://IP:8000/hub/;
  }

  location /user/jupyteradmin {
    proxy_pass http://IP:8000/user/jupyteradmin;
  }  

  location /user/jupyterhub {
    proxy_pass http://IP:8000/user/jupyterhub;
  }  

#0218

#这个/jupyterhub/与上面添加的对应 
  location  /jupyterhub/ {
        
        proxy_pass http://IP:8000/jupyterhub/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        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";
        #这是代理网站的资源,可以查看但不能下载
        add_header Content-Disposition "inline";
        add_header X-Content-Type-Options "nosniff";
      
      }
 #  proxy_http_version 1.1显然意思是指定http版本为1.1, 如果不加的话, 在Notebook中将无法连接到内核, 一直会显示disconnected.
 
 
#这个是资源禁止访问且禁止下载
    location ~ \.(zip|rar|sql|bak|gz|7z|py|pdf|doc|docx|xls|xlsx|out)$ {
        add_header Content-Disposition "inline";
        add_header X-Content-Type-Options "nosniff";
        #       return 404;
 
   }
 
 
#浏览器禁止下载
 
   #location  /jupyterhub/ {
   location  // {
        #rewrite /jupyterhub/files/* /1111;
        rewrite /jupyterhub/files/* /404 permanent;
        #rewrite /jupyterhub/files/(.*)$ /404;
        proxy_pass http://IP:8000/jupyterhub/;
        proxy_set_header Host $host;
        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";
        add_header Content-Disposition "inline";
       # add_header X-Content-Type-Options "nosniff";
       add_header X-Content-Type-Options "nosniff";
 
     }


  location ~ ^/.well-known/acme-challenge {
    allow all;
    root /var/www/html;
    try_files $uri = 404;
    break;
  }
      

  location /arcgis/ {
    proxy_pass http://127.0.0.1:6080;
    proxy_redirect off;
  }
     # arcgis服务 重定向 (IP访问转域名访问)
  location /arcgis/rest/services/ {
    proxy_pass    http://127.0.0.1:6080/arcgis/rest/services/;
  }

  error_page   500 502 503 504  /50x.html;
  location = /50x.html {
    root   /usr/share/nginx/html;
  }

}


server {
    listen 80;
    server_name AA.BB.com; 
    location / {
       return 301 https://$host$request_uri;
    }
    if ($host = ict-cloud.thupdi.com) {
       return 301 https://$host$request_uri;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Nginx+Proxy_cache高速缓存配置

    Nginx+Proxy_cache高速缓存配置

    本文主要介绍了Nginx+Proxy_cache高速缓存配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2026-01-01
  • Nginx 访问控制的多种方法

    Nginx 访问控制的多种方法

    本文系统介绍了Nginx实现Web访问控制的多种方法,包括IP黑白名单、路径/方法/参数控制、HTTP基本认证、防盗链机制、客户端证书校验、限速限流、地理位置控制等基础防护策略,感兴趣的可以了解一下
    2025-12-12
  • nginx配置教程之add_header的坑详解

    nginx配置教程之add_header的坑详解

    这篇文章主要给大家介绍了关于nginx配置教程之add_header坑的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • Nginx的正则表达式详解

    Nginx的正则表达式详解

    今天来聊一聊他的正则表达式的使用规则,我会简单的举几个例子然后进行说明讲解,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-10-10
  • Nginx配置之虚拟主机server_name优先级方式

    Nginx配置之虚拟主机server_name优先级方式

    本文主要介绍了Nginx配置文件中不同匹配规则的优先,包括精确匹配、以星号开头的最长通配符、以星号结尾的最长通配符以及第一个正则表达式匹配,总结了Nginx处理匹配规则的优先机制,以及注意事项
    2026-04-04
  • Nginx部署Vue二级目录500错误的解决方案

    Nginx部署Vue二级目录500错误的解决方案

    这段描述主要讲解了在Nginx环境下部署Vue项目的方法,特别针对二级域名和路径配置进行了详细说明,提供了解决500错误的有效配置
    2026-05-05
  • nginx: [warn]

    nginx: [warn] "log_format" directive used only on "http" lev

    这篇文章主要介绍了nginx: [warn] "log_format" directive used only on "http" level 解决方法,需要的朋友可以参考下
    2014-08-08
  • Nginx配置文件详解

    Nginx配置文件详解

    Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。Nginx功能丰富,可作为HTTP服务器,也可作为反向代理服务器,邮件服务器。这篇文章主要介绍了Nginx配置详解,需要的朋友可以参考下
    2017-05-05
  • Nginx转发需求querystring转写示例解析

    Nginx转发需求querystring转写示例解析

    这篇文章主要为大家介绍了Nginx转发需求querystring转写示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • 在Debian上安装最新版Nginx实践

    在Debian上安装最新版Nginx实践

    文章介绍了Nginx安装的官方文档流程,涵盖先决条件、密钥验证、存储库设置、安装步骤及常用命令,如启动/停止/重启服务、检查配置、查看版本与日志等,帮助用户完成Nginx部署与管理
    2025-09-09

最新评论