如何通过端口 443 处理多个应用程序

如何通过端口 443 处理多个应用程序

我绝对不是 apache(在我们的例子中是 Oracle 版本的 apache,OHS)和在 httpd.conf 中重定向输入方面的专家。我们在同一台服务器上的 WLS 10.3.5 上部署了多个应用程序,并希望通过端口 443 访问它们。

当然,并非所有应用程序都可以部署在 443 上,否则我们会收到端口正在使用中的错误。

例如,我们在 3443 上部署了 app1,在 4443 上部署了 app2,在 5443 上部署了 app3。我们的客户端希望能够简单地输入 https:///app1(或 app2 或 app3),而不是 https://:3443/app1(或 :4443/app2 或 :5443/app3)。

是否可以在 httpd.conf (或 ssl.conf) 中执行此操作?是否可以让 URL 仅使用 443,然后在 conf 文件内重定向到应用程序实际部署的位置 (3443、4443 和 5443)?

答案1

这当然可以实现,而具体实现方式取决于应用程序的运行方式;如果应用程序由 Web 服务器提供服务,并且只监听特定端口,那么您需要修改配置以使用类似于以下内容的 VirtualHosts:

<VirtualHost *:443>
    ServerAlias app1.com
    DocumentRoot /var/www/html/app1    #or however this app is configured   
    [the rest of your configuration directives for the app]
</VirtualHost>

<VirtualHost *:443>
    ServerAlias app2.com
    [As above but for app2]
</VirtualHost>

然而,如果您的应用程序由监听您所记录的端口的其他进程提供服务,那么您可以使用类似于上述的结构进行设置,但利用反向代理通过端口 443 为应用程序提供服务,例如:

<VirtualHost *:443>
    ServerAlias app1.com
    ProxyPreserveHost on

    SSLProxyEngine On
    ProxyPass / http://localhost:5443/ #change the port here for the app in question
    ProxyPassReverse / http://localhost:5443/ # change the port here for the app in question

  SSLEngine on
  [SSL directives as appropriate for your requirements]
</VirtualHost>

<VirtualHost *:443>
    ServerAlias app2.com
    ProxyPreserveHost on


    SSLProxyEngine On
    ProxyPass / http://localhost:5443/ #change the port here for the app in question
    ProxyPassReverse / http://localhost:5443/ # change the port here for the app in question

  SSLEngine on
  [SSL directives as appropriate for your requirements]
</VirtualHost>

这样,SSL 由 Web 服务器处理,http 请求将传回侦听所列端口的任何应用程序 - 并通过请求的主机名区分应用程序。值得注意的是,如果应用程序正在侦听这些端口并仅通过 SSL 进行响应,建议禁用这些应用程序的 SSL(并按照上述说明通过 Apache 运行它 - 配置完成后,如果这些端口当前在外部打开,当然也要关闭防火墙中的这些端口)。

答案2

如果您正在使用 OHS,那么最好使用代理插件 mod_wl_ohs.conf 文件进行反向代理。在 mod_wl_ohs.conf 中,您可以添加以下行

在此处输入图片描述

查看 http://docs.oracle.com/cd/E28280_01/web.1111/e37889/oracle.htm#PLGWL510了解更多信息

这样,您不再需要额外的虚拟主机,而是使用 OHS 443 路由到多个 weblogic 实例

答案3

根据您描述的情况,这可以通过 ProxyPass 来完成。它是 apache 中的一个模块,允许重定向 url 请求。 这是 apache.org 信息

对于每个虚拟主机,即:https://app1 你将添加到虚拟主机设置

ProxyPass / https://app1:3443
ProxyPassReverse / https://app1:3443

有很多不错的 HowTo 网站。但这个应该能给你指明正确的方向

如果他们不关心 URL 最终看起来如何,您也可以使用 mod_rewrite 将他们重定向到正确的 URL。我不擅长那种语法,无法给您举个例子。

编辑:

对于 1 个服务器主机别名。将可以根据站点重定向

<VirtualHost *:443>
    ServerAlias myserver.com
    ProxyPreserveHost on

    SSLProxyEngine On
    ProxyPass /app1 http://localhost:3443/app1 #change the port here for the app in question
    ProxyPassReverse /app1 https://localhost:5443/app1 # change the port here for the app 

    ProxyPass /app2 https://localhost:4443/app2
    ProxyPassReverse /app2 https://localhost:4443/app2

    ProxyPass /app3 https://localhost:5443/app3
    ProxyPass /app3 https://localhost:5443/app3

  SSLEngine on
  [SSL directives as appropriate for your requirements]
</VirtualHost>

相关内容