VirtualHost 反向代理新的 https 端口到 http Ubuntu/Apache2

问题描述

编辑:我发现/意识到在 serverfault 上这可能更好,所以我在那里发布和重定向。我会删除这个帖子。 https://serverfault.com/questions/1047948/apache-ubuntu-multiple-ports-or-subdomains-with-ssl-reverse-proxy-to-different

在这里遇到了一些困难。我安装了 azure + Apache2 的 Ubuntu 18.04 VM。 我有一个域 (mysitedotcom) 指向我的 Web 服务器,并且最近保护了设置 SSL 的服务器。我获得了使用 letencrypt 的证书。

我也在运行 RStudio 闪亮服务器(端口 3838)和 Rstudio Server 开源(8787)。这些是 SSL 不可用的免费版本。我了解到,现在使用 SSL 的 Web 服务器将无法通过 iframe 将来自闪亮服务器的内容嵌入到我的网页 (wordpress) 中。

所以我正在尝试为我的闪亮和 rstudio 服务器在它们各自的端口上设置一个 VirtualHost/反向代理/东西。我尝试按照以下说明进行操作:https://www.r-bloggers.com/2015/12/shiny-https-securing-shiny-open-source-with-ssl/ 问题是这些和其他在线说明似乎假设这是在机器上运行的唯一服务器,或者至少您没有运行 Web 服务器。我不想将所有端口 80 流量重定向到我闪亮的服务器。我需要定义除 443 之外的新 HTTPS 端口,并将该流量本地重定向到 HTTP 端口。

既然我已经按照如下所示设置了我的网络服务器,我该如何像以前一样设置单独的“公共”端口,但使用 SSL,并将流量发送到这些服务器运行的端口?

>
http(s)://mysite.com >> webserver (OK)
http(s)://mysite.com:48787 >> rstudio @ 8787
http(s)://mysite.com:43838 >> shiny @ 3838

将我的防火墙(azure 和 ufw)打开到 48787 和 43838,并关闭 azure 中的当前端口(但在 ufw 中保持打开状态)。我相信我可以使用现有的证书:

root@wp-vm:/# ls /etc/letsencrypt/live/mysite.com
README  cert.pem  chain.pem  fullchain.pem  privkey.pem

root@wp-vm:/# cat /etc/apache2/sites-available/mysite.com.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName mysite.com
    ServerAlias www.mysite.com
    DocumentRoot /var/www/mysite.com
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/mysite.com/>
        AllowOverride All
    </Directory>
RewriteEngine on
RewriteCond %{SERVER_NAME} =www.mysite.com [OR]
RewriteCond %{SERVER_NAME} =mysite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

</VirtualHost>

编辑: 另外,我已经告诉 Apache 监听新端口:

root@wp-vm:/# cat /etc/apache2/ports.conf
# If you just change the port or add more ports here,you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default.conf

Listen 80

<IfModule ssl_module>
        Listen 443
</IfModule>

<IfModule mod_gnutls.c>
        Listen 443
</IfModule>

# Added for shiny
<IfModule ssl_module>
        Listen 43838
</IfModule>

<IfModule mod_gnutls.c>
        Listen 43838
</IfModule>

# Added for rstudio
<IfModule ssl_module>
        Listen 48787
</IfModule>

<IfModule mod_gnutls.c>
        Listen 48787
</IfModule>

防火墙状态:

root@wp-vm:/etc/apache2/sites-available# ufw status
Status: active

To                         Action      From
--                         ------      ----
Apache Full                ALLOW       Anywhere
8787                       ALLOW       66.my.home.ip
3838                       ALLOW       Anywhere
Apache Full (v6)           ALLOW       Anywhere (v6)
3838 (v6)                  ALLOW       Anywhere (v6)

编辑:我现在还尝试在 apache2.conf 中加载一些附加模块(proxy_module、proxy_http_module、headers_module、deflate_module 和 libxml2 LoadFile),并将以下内容包含在我的 EXISTING mysite.com.conf 虚拟主机块中以实现所需的结果通过现有的 443 端口和指向该服务的子目录 (mysite.com/rstudio)。

  <Location /rstudio>
      ProxyPass http://localhost:8787
      ProxyPassReverse http://localhost:8787
      Order allow,deny
      Allow from all
  </Location>

重新加载防火墙,但这不起作用。显然我错过了一些东西,只是希望我知道什么。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...