我有一台AWS服务器,要同时托管Rstudio社区服务器和jupyterhub。默认情况下,它们分别在端口8787和8000上运行。我想创建一个将执行以下操作的apache服务器(让我将服务器称为公共dns www.mydomain.com):
Rstudio服务器将通过以下网址提供:www.mydomain.com/rstudio
jupyterhub将通过以下网址提供:www.mydomain.com/jupyterhub
当前,我仅安装了jupyterhub服务器,并尝试将所有对/jupyterhub
的请求正确地重定向到内部jupyterhub服务器。我目前已经能够将在端口443上运行的apap重定向到在127.0.0.1:8000上运行的jupyterhub,但是在此过程中无法包含url扩展名/jupyterhub
。
以下是对应的设置文件
jupyterhub_config.py
c.JupyterHub.ip = '127.0.0.1'
c.Spawner.default_url = '/lab'
sites-available / default-ssl.config
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:8000/$1 [P,L]
RewriteRule /(.*) http://127.0.0.1:8000/$1 [P,L]
# preserve Host header to avoid cross-origin problems
ProxyPreserveHost on
# proxy to JupyterHub
<Location "/">
ProxyPass http://127.0.0.1:8000/
ProxyPassReverse http://127.0.0.1:8000/
</Location>
此设置正常工作,并且我的jupyterhub在https:\\www.mydomain.com
投放
https:\\www.mydomain.com\jupyterhub
上投放的内容sites-available / default-ssl.config
RewriteEngine On
RewriteCond %{HTTP:Connection} Upgrade [NC]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /jupyterhub/(.*) ws://127.0.0.1:8000/$1 [P,L]
RewriteRule /jupyterhub/(.*) http://127.0.0.1:8000/$1 [P,L]
# preserve Host header to avoid cross-origin problems
ProxyPreserveHost on
# proxy to JupyterHub
<Location "/jupyterhub">
ProxyPass http://127.0.0.1:8000/
ProxyPassReverse http://127.0.0.1:8000/
</Location>
现在,每当我尝试打开https:\\www.mydomain.com\jupyterhub
时,它会将我重定向到https:\\www.mydomain.com\hub
并引发错误:
请求的URL / hub。
我对proxypass和RewriteEngine的了解几乎没有。我通过从不同的教程和博客中进行复制来进行了这些配置。
如果有人可以另外解释这两个工具究竟能实现什么以及如何实现,那将是有益的。
预先感谢