Ubuntu 下 Apache2 使用二级域名反向代理 Jupyter Lab,并配置 SSL

对 Apache2 不是很熟悉,配置的时候走了不少弯路,特此记录。

前置条件

本文所有操作是在 Ubuntu 16.04 LTS 和 Apache2 环境下,以 root 权限进行执行的。Jupyter Lab 服务默认运行在 8888 端口。SSL 证书使用了由阿里云签发的免费证书。

配置主域名 SSL 证书

注意这一节配置的主域名的 SSL 证书,若只需配置二级域名,则跳过这一节

编辑文件 /etc/apache2/sites-available/default-ssl.conf,在 ServerAdmin 下方新增一行 ServerName domain_name,注意这里的 domain_name 替换成你自己的主域名。

然后找到找到 SSLEngine, SSLCertificateFile,SSLCertificateKeyFile并修改成以下内容:

SSLEngine on
SSLCertificateFile (填写 public 证书路径 一般以  public.crt 结尾)
SSLCertificateChainFile (填写 chain 证书路径 一般以 chain.crt 结尾)
SSLCertificateKeyFile (填写 key 文件路径一般以 .key 结尾)

然后保存退出即可。

配置全局 https 访问

打开 /etc/apache2/sites-available/000-default.conf
标签内任意区域加入以下三行代码:

RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]

保存退出。执行以下命令使配置生效:

#启动 rewrite mod
a2enmod rewrite
#重启 apache
service apache2 restart

即可实现全局 https 访问。

反向代理 Jupyter Lab 服务器

因为需要能持续访问,因此新建一个名为“Jupyter”的 screen

screen -S Jupyter

在新的 screen 内开启 Jupyter Lab:

jupyter lab

然后按下 Ctrl + A + D 回到主窗口。
/etc/apache2/sites-available/ 下新建配置文件:

vim /etc/apache2/sites-available/jupyter.conf

jupyter.conf 里面输入以下内容:


    ServerAdmin 填写自己的管理员
    ServerName 填写自己的域名

    #SSL
    SSLEngine on
    SSLCertificateFile (填写 public 证书路径 一般以 public.crt 结尾)
    SSLCertificateChainFile (填写 chain 证书路径 一般以 chain.crt 结尾)
    SSLCertificateKeyFile (填写 key 文件路径一般以 .key 结尾)

    #Lab
    
            ProxyPass http://localhost:8888/
            ProxyPassReverse http://localhost:8888/
            ProxyPassReverseCookieDomain localhost 填写二级域名
            RequestHeader set Origin "http://localhost:8888"
    

    #kernels
    
            ProxyPass ws://localhost:8888/api/kernels/
            ProxyPassReverse ws://localhost:8888/api/kernels/
    

    #terminals
    
            ProxyPass ws://localhost:8888/terminals/websocket/
            ProxyPassReverse ws://localhost:8888/terminals/websocket/
    

    Redirect permanent / https://填写二级域名


填写完成后保存退出,执行以下命令激活配置:

#激活配置
a2ensite jupyter.conf
#重启 Apache
service apache2 reload
service apache2 restart

此时即可使用 https://二级域名 访问 Jupyter Lab 了。

你可能感兴趣的:(Ubuntu 下 Apache2 使用二级域名反向代理 Jupyter Lab,并配置 SSL)