nginx反向代理jupyter

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;
    }
}

<think>好的,我现在需要帮助用户配置Nginx作为反向代理来转发Jupyter Notebook的请求。根据用户提供的引用内容,特别是引用[2]和引用[3],用户可能遇到了配置问题,比如终端可以创建但notebook无法创建的情况。这可能与Nginx代理设置有关,特别是WebSocket的支持,因为Jupyter使用WebSocket进行实时通信。 首先,我得确认用户已经正确安装了Nginx,并且知道如何修改配置文件。用户可能需要编辑Nginx的站点配置文件,通常在/etc/nginx/sites-available/目录下。根据引用[2]中的配置示例,关键点包括设置proxy_pass指向Jupyter的运行端口,比如8888,并添加必要的HTTP头信息,如Host、X-Real-IP等。此外,必须处理WebSocket的连接,这需要设置Upgrade和Connection头,并指定HTTP版本为1.1,如引用[2]所示。然后,用户可能需要配置SSL,这在引用[2]末尾提到,但用户当前的问题可能还未涉及HTTPS,所以暂时可以忽略,除非用户有进一步的需求。另外,引用[3]提到使用location /进行反向代理,等效于端口转发,但需要确保WebSocket的正确处理,否则会出现问题。接下来,用户可能已经按照引用[4]配置了Jupyter,设置了密码和禁止自动打开浏览器。需要确认Jupyter的配置文件是否正确,特别是允许远程访问和设置IP为0.0.0.0,这样Nginx才能正确代理。 还需要检查SELinux或防火墙是否阻止了端口转发。如果用户遇到问题,可能需要开放端口或调整安全策略。最后,生成相关问题需要考虑用户可能的后续步骤,比如SSL配置、性能优化或安全性加强。用户可能接下来会问如何启用HTTPS,或者如何优化Nginx代理设置以提高性能。</think>### 配置Nginx反向代理转发Jupyter Notebook请求的步骤 #### 1. **配置Jupyter Notebook** - 修改Jupyter配置文件(如`~/.jupyter/jupyter_notebook_config.py`): ```python c.NotebookApp.allow_origin = '*' # 允许跨域请求 c.NotebookApp.ip = '0.0.0.0' # 允许外部IP访问 c.NotebookApp.open_browser = False # 禁止自动打开浏览器 c.NotebookApp.port = 8888 # 指定运行端口 ``` 保存后通过`jupyter notebook`命令启动服务[^4]。 --- #### 2. **配置Nginx反向代理** - 创建或修改Nginx配置文件(如`/etc/nginx/sites-available/jupyter_proxy`): ```nginx server { listen 80; server_name your_domain.com; # 替换为域名或IP地址 location / { proxy_pass http://localhost:8888; # 与Jupyter端口一致 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; # WebSocket支持 proxy_set_header Connection "upgrade"; proxy_redirect off; } } ``` 保存后执行`sudo nginx -t`测试配置,再通过`sudo systemctl reload nginx`生效[^2][^3]。 --- #### 3. **验证配置** - 访问`http://your_domain.com`,输入Jupyter的访问密码即可使用。 - 若出现WebSocket连接问题(如终端无法创建),检查Nginx的`Upgrade`和`Connection`头是否配置正确[^2]。 --- #### 4. **扩展配置(可选)** - **SSL加密**:通过Let's Encrypt生成证书,并在Nginx配置中添加`listen 443 ssl`及相关证书路径。 - **访问控制**:通过Nginx的`auth_basic`模块添加额外身份验证层。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值