Apache 在前面,Tomcat 在后面,但是 SSL 不起作用?

Apache 在前面,Tomcat 在后面,但是 SSL 不起作用?

我已将 Apache 设置为我的 Web 服务器,并且 Tomcat 通过 挂接到 Apache mod_jk,因此用户永远不会与 Tomcat 交互。

我已经在 Apache 上设置了 SSL,并且可以使用 来访问它https://localhost,但是当我尝试访问我的应用程序时https://localhost/app,却出现directory not found错误。

问题是当我使用常规 http 时,我可以正常访问它:http://localhost/app

我必须编辑什么才能使此连接正常工作?

  • 我已取消注释 AJP 连接器server.xml
  • 我已经将我的虚拟主机添加到httpd.conf

我错过了什么?

答案1

Apache 将 http 和 https 视为不同的虚拟服务器。您是否在两个虚拟主机下设置了反向代理?

答案2

您需要将设置从 http 复制到 https - 如果您有 http 连接器,则不需要 ajp 连接器

看看它是如何设置的 - 可能它执行了代理传递或者使用了末尾带有 P 的 RewriteRule,它是一个代理。

答案3

您对工人的定义可能有误。检查workers.properties以了解工作类型。如果是ajp13,请取消注释tomcat中的ajp部分,使其恢复原样。mod_jk通常使用ajp13作为类型。

答案4

如果您使用 mod_jk,则需要 Tomcat 中的 AJP 连接器。

在大多数情况下,如果工作器存在配置问题,Apache 将以 500 错误(服务器错误)进行响应。如果出现 404,这是因为请求未传递到 Tomcat 服务器(或者从 Tomcat 的角度来看 URL 无效)。检查 JkMount 是否存在并且是否正确存在于 Apache 配置中(对于 443 端口)。

要调试 mod_jk 的问题,请打开 mod_jk 中的调试日志并查看 Apache 日志。在 mod_jk 配置(通常是 jk.conf)中添加以下几行:

JkLog文件 /var/log/apache2/mod_jk.log

JkLogLevel 调试

您应该在启动时看到一些日志和每个请求的一些有趣的详细信息。

我为 Apache2 + SSL + JBoss 进行了此类设置。您可以在以下位置找到其他详细信息和优化提示 在生产环境中的 Apache 服务器后面部署 J2EE 应用程序

相关内容