jupyterhub

很多人应该已经对jupyter和notebook已经有所了解了。如果是多人共享服务器的话,就需要用到jupyter的多用户版本jupyterhub。jupyterhub架构如图所示。

需求背景

大多数实验室生成环境一般处于学校内网当中,然而一般在学校中,一般只允许内网访问。但是,教育网一般都有原生ipv6的ip。所以就有一个想法,通过云服务器作为中转,给服务器做代理,实现ipv4外网访问。

需求

  • 处于内网的实验室服务器一台,具有ipv6公网ip
  • 阿里云服务器ECS一台,需要有ipv6的实例

连接架构

  • 阿里云ECS-->实验室服务器 ipv6
  • 你的电脑-->阿里云ECS nginx端口 ipv4

    这样就可以实现随时随地访问实验室服务器的jupyterhub服务。

实现

服务器端

jupyterhub --ip  [::0] --port 8888 --NotebookApp.allow_origin='*' --config=./jupyterhub_config.py

其中jupyterhub_config.py 中配置了SSL证书,实现https访问。

上述参数代表所有ipv4和ipv6网段ip均可访问。

ECS端

nginx.conf 配置如下:

    server{
listen 8888 ssl http2 default_server;
ssl_certificate xxxxxxxxx.pem;
ssl_certificate_key xxxxxxxxxx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_stapling on;
ssl_stapling_verify on;
add_header Strict-Transport-Security max-age=15768000; include /etc/nginx/default.d/*.conf;
index index.php index.html index.htm;
location / {
proxy_pass https://[实验室ipv6 ip]:8888;
#websocket terminal
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Origin "";
}
# Managing requests to verify letsencrypt host
location ~ /.well-known {
allow all;
}
}

注意事项:

  • jupyterhub如果配置了https,则nginx也必须配置https。否则会无法set cookie,导致一直卡在login界面。

  • websocket的配置参考了官网方案。但是没啥用,所以又看了一篇关于nginx转发带websocket应用的文章。综合考虑,终于解决了转发后无法打开terminal的问题。

  • dhparam.pem文件可能不存在,需要使用openssl生成

jupyterhub nginx proxy pass----ipv6转ipv4实现内网穿透的更多相关文章

  1. frp + nginx 配置多人共用的http 内网穿透服务

    来源:简书   https://www.jianshu.com/p/c9d7527d607b 一. 前言 frp 是一个用Go语言开发的,可用于内网穿透的高性能的反向代理应用,支持 tcp, udp ...

  2. nginx proxy pass redirects ignore port

    nginx proxy pass redirects ignore port $host in this order of precedence: host name from the request ...

  3. frp+nginx内网穿透

    frp+nginx内网穿透 背景:自己有台内网Linux主机,希望被外网访问(ssh.http.https): 准备工作 内网Linux主机-c,可以访问c主机和外网的主机-s(windows/lin ...

  4. 刚刚研究了下ipv6,尝试配置内网VPS的IPv6地址

    刚刚研究了下ipv6,尝试配置内网VPS的IPv6地址是3台设备,分别是客户机Windows系统.核心交换机.PPPoE拨号的路由器 第一步:在PPPoE拨号的路由器上面查看ppp0拨号的地址 ifc ...

  5. 浏览器 Proxy SwitchyOmega 插件设置代理访问内网服务器

    使用Proxy SwitchyOmega 插件通过代理 直接访问到内网网站 一.使用场景 如下图所示,如果在电脑的网络设置中开启代理,每次更换代理就需要进入这里设置改变代理.且我们可能回需求到两个网页 ...

  6. 基于nginx负载均衡及frp的内网穿透实例3-多用户多网站共用80端口

    原文地址:点击跳转 最近frp用户量有点多,而且很多用户都是想把部署于本地或者内网的web服务暴露至公网,之前提到过,暴露到公网之后如果一般都需要用域名:端口的方法来访问,但是没有人会喜欢用这种方式访 ...

  7. nginx根据项目名实现内网地址转发

    nginx根据访问的项目名进行内网地址转发 以下是nginx的配置信息: server { listen 8081; server_name localhost; #charset koi8-r; # ...

  8. Keepalivaed +Nginx proxy 高可用架构方案与实施过程细节

    1.开源产品介绍 1)CMS介绍 官方网站http://www.dedecms.com/,是一个网站应用系统构建平台,也是一个强大的网站内容管理系统,既可以用来构建复杂的体系的企业信息门户或者电子商务 ...

  9. nginx proxy超时报错 upstream timed out (110: Connec...

    环境介绍 服务器:centos6.4服务:nginx proxy 问题描述: 然后查找  /opt/usr/nginx/1.4.0/logs  错误 error.log日志提示如下 2015/01/0 ...

  10. IPv6 VS IPv4,谈谈升级 IPv6 的必要性

    11月26日,中办.国办印发了<推进互联网协议第六版(IPv6)规模部署行动计划>,提出国内要在 5~10 年的时间形成下一代互联网自主技术体系和产业生态,建成全球最大规模的 IPv6 商 ...

随机推荐

  1. 不为人知的网络编程(十六):深入分析与解决TCP的RST经典异常问题

    本文由腾讯技术kernel分享,原题"TCP经典异常问题探讨与解决",下文进行了排版和内容优化等. 1.引言 TCP的经典异常问题无非就是丢包和连接中断,在这里我打算与各位聊一聊T ...

  2. Web端即时通讯实践干货:如何让WebSocket断网重连更快速?

    本文作者网易智慧企业web前端开发工程师马莹莹.为了提升内容质量,收录时有修订和改动. 1.引言 在一个完善的即时通讯IM应用中,WebSocket是极其关键的一环,它为基于Web的即时通讯应用提供了 ...

  3. Angular(一) - Typescript&Angular入门熟悉

    1. Typescript 1.1 安装typescript 1.2 typescript的小例子 1.2.1 新建一个index.ts 1.2.2 编译ts成js 1.2.3 查看生成的index. ...

  4. (.net core)Kong网关的使用

    一.优势: 提供统一的 API 管理,简化流量控制.负载均衡.安全性控制等工作. 有可视化界面可操作,支持高度 可扩展性,可以通过插件来扩展功能. 在 微服务架构 中表现优异,支持多种协议和高并发场景 ...

  5. 线上JVM性能优化详解

    概述 jvm中除了程序计数器,其他的区域都有可能会发生内存溢出 内存溢出是什么? 当程序需要申请内存的时候,由于没有足够的内存,此时就会抛出OutOfMemoryError,这就是内存溢出 内存溢出和 ...

  6. Hadoop 概述(二)

    shell定时上传linux日志信息到hdfs 从标题可以分析出来,我们要使用到shell,还要推送日志信息到hdfs上. 定义出上传的路径和临时路径,并配置好上传的log日志信息.这里我使用了上一节 ...

  7. nginx平台初探-1

    初探nginx架构(100%) 众所周知,nginx性能高,而nginx的高性能与其架构是分不开的.那么nginx究竟是怎么样的呢?这一节我们先来初识一下nginx框架吧. nginx在启动后,在un ...

  8. Docker离线部署Nginx

    总体思路:在有网络的环境上制作Nginx的镜像包,导出并上传至无网络的环境上,启动Nginx即可.    在上一篇 <无网环境Docker Rpm离线安装> 里面,已经在联网的机器上安装好 ...

  9. 将Ldap组织结构及用户信息同步到MySQL,用Spring Boot项目操作

    从上一篇<将Mybatis引入Spring Boot项目连接数据库操作>知道了如何在Spring Boot项目操作数据库,学会了增删查改基本操作方法.本节记录如何从Ldap获取组织结构及用 ...

  10. 注册全局组件(H5) 任意页面使用

    在view下创建components文件夹. 在components下创建文件夹base. base文件夹是用来存放 基础组件的. 比如说页面中很多处都在使用的公共组件 如你需要自定义的按钮 在com ...