我已将 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 应用程序