我正在查看使用 SSL 设置 tomcat + apache 的指南:http://www.mulesoft.com/tcat/tomcat-ssl
在“何时将 SSL 与 Tomcat 一起使用”部分下,它说:
"...换句话说,如果您将 Tomcat 置于 Web 服务器的前端,并且仅将其用作 应用程序服务器或 Tomcat servlet 容器,在大多数情况下,您应该让 Web 服务器充当所有 SSL 请求的代理”
因为我已经有一个使用 SSL 设置的网络服务器,所以我决定偷懒。我使用默认设置安装了 tomcat,并启动了它。在我的 httpd.conf 中,我将所有 80 流量重定向到 443,然后将 proxypass 和 proxypassreverse 重定向到 ajp://hostname.com:8009。我重新启动了 httpd,它“似乎”通过 ssl 重定向到 tomcat 服务器。这是完全坏了还是我真的设法做到了我第一次去的目的?非常感谢任何测试建议。
<VirtualHost *:80>
ServerName hostname_DNS_alias.com
Redirect / https://hostname_DNS_alias.com
</VirtualHost>
<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/pki/tls/certs/thecrt.crt
SSLCertificateKeyFile /etc/pki/tls/private/thekey.key
SSLCertificateChainFile /etc/pki/tls/certs/CA.crt
ServerName hostname_DNS_alias.com
DocumentRoot /var/www/html
<Proxy *>
AddDefaultCharset off
Order deny,allow
Allow from all
</Proxy>
ProxyPass / ajp://hostname.com:8009/
ProxyPassReverse / ajp://hostname.com:8009/
</VirtualHost>
最佳答案
我想您已经明白了,但您可以查看 HTTPD 和 Tomcat 上的访问日志以确认请求正在被代理。您应该会在两个系统上看到一个访问日志条目。
几个简短的笔记...
如评论中所述,您可以从 Tomcat 中删除 HTTP 连接器。但这不是必须的。有时出于测试目的保持打开状态(即您可以直接访问服务器)或者如果您想在其上运行 Manager 应用程序会很好。如果你确实保留它,特别是如果你用它来运行 Manager 应用程序,你应该限制对它的访问。两种简单的方法是将 HTTP 连接器上的
address
属性设置为localhost
或配置 RemoteAddressFilter .请记住,从 HTTPD 服务器到 Tomcat 的 AJP 连接未加密(SSL 在 HTTPD 处终止),因此您要确保流量永远不会通过不安全的网络(如 Internet)。
由于您已经混合使用 HTTPD,您还可以使用它来提供静态文件。如果将它们部署到文档根目录,则可以添加“ProxyPass!”指令排除该路径被代理到 Tomcat。这将稍微减少请求的延迟,因为 HTTPD 确实需要从 Tomcat 获取静态文件。
关于java - 这是 Apache + Tomcat 之间的虚假 SSL 连接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25258153/