如何configuration我的httpd重写/代理,以指导app1.example.com:443到本地主机:8080和app2.example.com:443到本地主机:8081?

我有两个Tomcat实例,一个在端口8080上运行,另一个在8081上运行。两者都部署了一个名为app.war的web应用程序,但它们不仅被不同的端口分开,而且被不同的数据存储区分开。 然而,每个运行在同一个物理盒子上。

我们组织中的防火墙规则指定我只能通过端口443提供HTTPS服务。不支持HTTP,也不支持80,8080或8081的HTTPS。

物理盒运行RHEL5,在eth0上运行一个IP。 DNS设置为映射到app1.example.com和app2.example.com的框。

如何configuration我的httpd重写/代理,以指导app1.example.com:443到本地主机:8080和app2.example.com:443到本地主机:8081?

编辑

这是我试过的…

LoadModule ssl_module modules/mod_ssl.so Listen 443 NameVirtualHost *:443 ProxyRequests Off <VirtualHost *:443> ServerName app1.example.com SSLProxyEngine On SSlProxyMachineCertificateFile /etc/httpd/cert/10year.pem SSLVerifyClient Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / https://app.example.com: / ProxyPassReverse / https://app.example.com:8080/ ProxyPassReverseCookieDomain app.example.com app1.example.com <Location /> Order allow,deny Allow from all </Location> </VirtualHost> <VirtualHost *:443> ServerName app2.example.com SSLProxyEngine On SSlProxyMachineCertificateFile /etc/httpd/cert/10year.pem SSLVerifyClient Off <Proxy *> Order deny,allow Allow from all </Proxy> ProxyPass / https://app.example.com:8081/ ProxyPassReverse / https://app.example.com:8081/ ProxyPassReverseCookieDomain app.example.com app2.example.com <Location /> Order allow,deny Allow from all </Location> </VirtualHost> 

…当我尝试启动它时发生错误…

 $ service httpd start Starting httpd: [Mon Oct 21 11:18:43 2013] [warn] module ssl_module is already loaded, skipping (98)Address already in use: make_sock: could not bind to address [::]:443 (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting down Unable to open logs [FAILED] 

这条线看起来像缺less端口号。 这是一个错字吗?

 ProxyPass / https://app.example.com: / 

另外你也许应该把Apache作为http(或者ajp)处理到Tomcat的SSL和代理。 您可以使用本地主机作为服务器名称,例如:

 ProxyPass / http://localhost:8080/ 

错误消息的第一部分似乎表明,已经有一些在端口433上运行。第二部分似乎表明,你没有执行“服务”命令作为根…

做一个

 sudo service httpd restart 

这样你就可以确定你是根,并且你正在停止,然后启动apache。

你的httpd.conf看起来不错。 但是,我会configuration您的tomcat实例使用http,而不是https,因为没有必要encryptionstream量,当它留在主机上。 而且,https代理不能在apache上使用。 我也会为你的实例禁用默认的SSL虚拟主机。 这应该摆脱警告,你正在尝试加载SSL模块两次。