如何使用虚拟主机将 https 子文件夹重定向到 apache 中的不同端口?

如何使用虚拟主机将 https 子文件夹重定向到 apache 中的不同端口?

我有一个在端口 8112 上运行的 Web 服务,我可以重定向子域,例如http://myapp.mydomain.com通过设置 ServerAlias、proxypass 和 proxypassreverse 参数使用虚拟主机更改为 127.0.0.1:8112。

我通过下面概述的虚拟主机实现了这一点:

<VirtualHost *:80>
  ServerName mydomain.com
  ServerAlias myapp.mydomain.com myapp
  ProxyRequests off
  ProxyPass / http://127.0.0.1:8112/
  ProxyPassReverse / http://127.0.0.1:8112/
  ProxyPassReverseCookieDomain 127.0.0.1 %{HTTP:Host}
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
</VirtualHost>

但是,我想使用 https 并设置一个子文件夹以重定向到它。即我希望能够公开 https://secure.mydomain.com/myapp

我不想重定向 https 子域,因为我想对在同一 IP 上运行的几种不同的服务执行此操作,并且我只有一个安全子域的证书。

我猜是某种重写?但它与 proxypass 方法的起点太不一样了,我无法弄清楚。我看了在这些例子中但似乎没有一个适用。

我的 SSL 证书都很好,我的 SSL 虚拟主机很高兴地指向一个带有 hello world 的根目录,但我不知道该添加什么才能让我的子文件夹重定向到在不同端口上运行的服务,就像我可以通过 http 使用子域名一样

答案1

这样做了:

<VirtualHost *:443>
    ServerName mydomain.com
    ServerAlias secure.mydomain.com
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>

    SSLEngine on
    SSLProxyEngine On
    SSLCertificateFile    /etc/apache2/ssl/server.crt
    SSLCertificateKeyFile /etc/apache2/ssl/server.key
    SSLCertificateChainFile /etc/apache2/ssl/sub.class1.server.ca.pem
    SSLCACertificateFile /etc/apache2/ssl/ca.pem

    ProxyRequests Off
    ProxyPreserveHost On

    ProxyPass /myapp/ http://127.0.0.1:8112/
    <Location /myapp/>
      ProxyPassReverse /
      ProxyPassReverseCookiePath / /myapp/
        #Some web services may or may not require an additional specific header variable
        # or additional internal configuration settings when located at a subfolder
        #In my case for example myapp specifically required a header variable to be set
        # with the new subfolder base as follows
        RequestHeader set X-myapp-Base "/myapp/"
      Order allow,deny
      Allow from all
    </Location>
</VirtualHost>

在这个解决方案中,web 服务将会像在 http 上响应一样做出反应,而 apache 反向代理将会处理 ssl,这样服务就会以 https 的形式呈现给用户。

这可能会破坏一些支持 http/https 的服务或网站。例如,Wordpress 需要将 X-forwarded-for 变量添加到标头中,方式与上述示例类似。

相关内容