带有 proxy_ajp SSL 的 Apache2 和 Tomcat7

带有 proxy_ajp SSL 的 Apache2 和 Tomcat7

我有一台服务器,它在 Tomcat 虚拟主机 (site1.domain.com、site2.domain.com) 等中运行多个 Web 应用程序。在 8080 和 8443 端口上运行 SSL。默认设置。

Tomcat 还有一个 Apache2 前端,每个 tomcat 站点都有单独的网站,配置为通过 ajp 连接器进行通信。

问题是我无法从 Apache 端使 ssl 运行,问题是哪一个服务器应该处理 https?

答案1

好的,明白了。

  1. 创建两个都指向您的 Tomcat 服务器 IP 地址的 DNS 条目。(site1.domain.int、site2.domain.int)
  2. 在 tomcat 中创建两个虚拟主机。测试它们 - 在其中放置一个 /manager 应用程序[从默认复制并相应地编辑 xml appBase 路径] 以测试它们是否正常工作(通过端口 8080 来验证它确实是处理 http 的 tomcat)
  3. 设置 apache 服务器并根据第 1 部分创建虚拟主机。3.1 使用 make-ssl-cert 创建自签名 ssl (.pem)(在 Linux 中)

对于 HTTP 和 HTTPS,每个 apache 主机应该看起来类似:

<VirtualHost *:80>
ServerName server.domain.int
ServerAlias server
#Redirect / https://server.domain.com
ProxyRequests Off
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / ajp://server.domain.int:8009/
ProxyPassReverse / http://server.domain.int

<Location />
    Order allow,deny
    Allow from all
</Location>

ServerAdmin webmaster@localhost ServerName server.domain.int

    SSLEngine on
    SSLCertificateFile    /etc/apache2/ssl/apache.pem

ProxyRequests Off
<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

ProxyPass / ajp://server.domain.int:8009/
 ProxyPassReverse / https://server.domain.int

<Location />
    Order allow,deny
    Allow from all
</Location>

理解它的关键是要知道 HTTPS 只发生在客户端和 apache 之间。Apache 通过 ajp 协议(不是 http,不是 https)与 tomcat 通信。4.测试地址 site1.domain.int 和 site2.domain.int(这次通过端口 80!)4.1 测试带有 https:// 前缀的地址

  1. 为了安全起见,在server.xml中关闭tomcat的8080和8443端口

现在,我自己回答我的问题 - 如果您为 Tomcat 设置了前端,则 SSL 必须由 Apache 处理(7)

相关内容