问题描述
编辑:我发现/意识到在 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 (将#修改为@)