
[英]How to pass session from apache2 to tomcat7 using proxy and virtual host
[英]Securing Tomcat Using SSL Behind an Apache2 Virtual Host [closed]
我有一个运行在apache虚拟主机后面的tomcat服务器(因此我可以在同一服务器上使用多个域)。 apache所做的全部工作就是获取主机名并将请求转发到适当的tomcat服务器,该服务器随后将处理所有事情。
我正在寻找在其中一个域上设置SSL的方法,并且我了解该操作的过程,但是对于是否应该允许tomcat处理所有SSL或Apache感到困惑。
有什么区别? 允许tomcat处理ssl有任何不利之处吗? 如果我让apache处理ssl,当我访问tomcat应用程序时,是否还会显示绿色条,挂锁等? 我对整个情况有些困惑。
我使用代理来处理apache2转发到正确的tomcat应用程序。 如果我像这样设置代理:
<VirtualHost 1.2.3.4:443>
ServerName host.domain.org
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
SSLEngine on
SSLProxyEngine On
SSLCertificateFile /etc/apache2/ssl/certificate.crt
SSLCertificateKeyFile /etc/apache2/ssl/certificate.key
ProxyRequests Off
ProxyPreserveHost On
ProxyPass / https://localhost:8443/
ProxyPassReverse / https://localhost:8443/
</VirtualHost>
我需要使用https和端口8443吗? 这样,我也不必在tomcat上设置SSL吗? 或者我可以在tomcat的server.xml的连接器中使用以下内容
secure = false
scheme = https
proxyName = www.mydomain.com
proxyPort = 443
不用担心将tomcat连接到ssl密钥? 这是通过apache2使用SSL保护tomcat应用程序的正确方法吗?
在您提供的配置中声明的方式,每个请求将有两个不同的https连接。 从任何客户到您的apache的第一名。 Apache将解密该请求,并-为了转发该请求-与tomcat协商SSL连接。 您必须以这种方式在两台计算机上都设置https。
您可以使用http转发到tomcat(通常为端口8080)。 但是,可能是tomcat看不到您正在以这种方式使用https(必须尝试一下)。 如果使用ajp,例如mod_jk或mod_proxy_ajp,而不是apache和tomcat之间的http,tomcat肯定也会看到https连接。
您应该做什么取决于Apache和tomcat之间的距离-以及两者之间在网络上的信任程度。 我想说,不加密运行此连接通常没问题,但是您的里程可能会有所不同。
通过在Apache上处理https,您会获得什么? 好吧,我认为Apache在会话协商和加密方面可能会更好地扩展-至少它将加密数据转移到另一台服务器上,从而使tomcat可以做其最擅长的事(服务应用程序)并让Apache处理所有奇怪的事情加密的东西。
我喜欢这种配置-通常,您还可以使用mod_rewrite,负载平衡等快速解决一些问题,因此额外的apache可以使您比“仅” tomcat灵活得多。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.