使用相同的apache2服务器服务两个内部服务器

时间:2019-06-02 05:12:14

标签: mod-rewrite apache2 proxypass

我有一台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的了解几乎没有。我通过从不同的教程和博客中进行复制来进行了这些配置。

如果有人可以另外解释这两个工具究竟能实现什么以及如何实现,那将是有益的。

预先感谢

0 个答案:

没有答案