我绝对不是 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>