如何将mod_proxyconfiguration为基于http vs https的ProxyPass?

我启用了运行SSL的Apache Tomcat。 我有Apache HTTP服务器充当反向代理,所以如果用户点击http:// myserver / tomcat /他们被传递给http:// myserver:8080 。

ProxyPass /tomcat/ http://myserver:8080/ ProxyPassReverse /tomcat/ http://myserver:8080/ 

我为SSLconfiguration了Apache HTTP服务器,所以当用户点击https:// myserver / tomcat /时,他们应该被传递给https:// myserver:8443 / 。

使用当前的ProxyPass&ProxyPassReverseconfiguration,它们将被redirect到非SSL URL。 如何设置代理通行证,以便根据传入的请求redirect到不同的协议和端口?

也就是说,如果有人通过HTTPS进入,我可以将它们redirect到我的tomcat @ https:// myserver:8443 ?


更新:

@迈克 – insch

我试过了:

 NameVirtualHost *:443 <VirtualHost *:80> ProxyPass /tomcat/ http://myserver:8080/ ProxyPassReverse /tomcat/ http://myserver:8080/ </VirtualHost> <VirtualHost *:443> ProxyPass /tomcat/ https://myserver:8443/ ProxyPassReverse /tomcat/ https://myserver:8443/ </VirtualHost> 

现在,当我访问: https:// myserver / tomcat /我得到“页面未find”。 在错误日志中,我看到“文件不存在:/ var / apache2 / htdocs / tomcat”

这是正确的,但我希望请求被路由到在https:// myserver:8443 /运行的tomcat。

猜猜我需要更多的看虚拟主机,除非有什么明显的错误。

你需要通过两个独立的<VirtualHost *:X>指令来做到这一点。 当您的HTTPS指令进入<VirtualHost *:443>您的HTTP指令进入<VirtualHost *:80>内部。 如果您的服务器configuration了多个“基于地址的”或“基于名称的”虚拟主机,请根 有关完整的详细信息,请参阅Apache 2文档。

为了完整性:如果是一个选项,最好在Apache上终止SSL,而不是让Tomcat处理它。 提供Tomcat只能从Apache访问,这是更简单,不会更安全。

在这个设置中,Apache将代理HTTP和HTTPS到http://myserver:8080/

 NameVirtualHost *:443 <VirtualHost *:80> ProxyPass /tomcat/ http://myserver:8080/ ProxyPassReverse /tomcat/ http://myserver:8080/ </VirtualHost> <VirtualHost *:443> ProxyPass /tomcat/ http://myserver:8080/ ProxyPassReverse /tomcat/ http://myserver:8080/ </VirtualHost>