我正在使用mod_jk 1.2.42对tomcat 8.5.11进行apache 2.4.29安装。
我的问题是apache + mod_jk没有将请求转发给tomcat
我们有一个先前的apache安装(2.2.31)与mod_jk(1.2.25)对同一个tomcat及其正常工作。
这是我们在mod_jk.log文件中遇到的唯一错误/异常:
[Fri Dec 08 08:02:26.659 2017] [32025:140457247692544] [debug] jk_child_init::mod_jk.c (3478): Initialized mod_jk/1.2.42
[Fri Dec 08 08:02:41.987 2017] [31596:140455607994112] [debug] jk_translate::mod_jk.c (3859): missing uri map for mycompany.com:/SCDO
[Fri Dec 08 08:02:41.987 2017] [31596:140455607994112] [debug] jk_map_to_storage::mod_jk.c (4027): missing uri map for mycompany.com:/SCDO
[Fri Dec 08 08:02:42.007 2017] [31596:140455607994112] [debug] jk_translate::mod_jk.c (3859): missing uri map for mycompany.com:/error.html
[Fri Dec 08 08:02:42.007 2017] [31596:140455607994112] [debug] jk_map_to_storage::mod_jk.c (4027): missing uri map for mycompany.com:/error.html
[Fri Dec 08 08:19:53.665 2017] [31598:140457247692544] [debug] wc_shutdown::jk_worker.c (390): Shutting down worker ajp13
在访问日志中,我们只收到404错误。
这是httpd.conf的包含:
Include conf/mod_jk.conf
这是mod_jk配置:
<IfModule !mod_jk.c>
LoadModule jk_module "/opt/apache-2.4.29/modules/mod_jk.so"
</IfModule>
JkWorkersFile "/opt/apache-2.4.29/conf/workers.properties"
#enable this log only for troubleshooting
JkLogFile "/opt/apache-2.4.29/logs/mod_jk.log"
JkLogLevel debug
JkMount /servlets-examples ajp13
JkMount /servlets-examples/* ajp13
JkMount /jsp-examples ajp13
JkMount /jsp-examples/* ajp13
JkMount /probe ajp13
JkMount /probe/* ajp13
JkMount /SCDO ajp13
JkMount /SCDO/* ajp13
JkMount /test ajp13
JkMount /test/* ajp13
JkMount /mod_jk_status mystatus
这是workers.properties:
worker.list=ajp13
worker.ajp13.port=8010
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.socket_timeout=300
worker.ajp13.max_packet_size=20000
worker.list=mystatus
worker.mystatus.type=status
任何想法都将受到赞赏。
答案 0 :(得分:1)
我有同样的问题,这让我发疯了。它开始于我加载LetsEncrypt ...这里有解决方案对我有用:添加&#34; JkMountCopy On&#34;到每个VirtualHost部分。
例如:
在/etc/httpd/conf.d/文件夹中,编辑具有VirtualHost定义的任何.conf文件(grep VirtualHost * .conf) - 可能有多个:
<VirtualHost _default_:443>
#Add the following line
JkMountCopy On
....
这只是一个例子,它可能不会说默认:443 - 另一个是你猜测的端口80。如果您的主httpd.conf中有VirtualHost部分,它可能也需要它。我没有。
答案 1 :(得分:0)
对不起以前的回答。
您必须在Tomcat的server.xml文件中检查AJP 1.3连接器的超时和maxPostSize *值。
*从Tomcat 7和上级,maxPostSize值必须小于0才能禁用它。
问候。
答案 2 :(得分:0)
让我在 Apache 中添加另一个可能的原因 => 通过 AJP 的 Tomcat 通信问题。
就我而言,我在机器上安装了 libapache2-mod-jk 库,它创建了一个单独的工作文件。我检查了主机上的当前文件:
find / -name "workers.properties"
并得到:
/etc/apache2/workers.properties
/etc/libapache2-mod-jk/workers.properties
之前一直如此:
以防万一您遇到了类似的问题并且您确定已经尝试了所有方法 - 请检查这个。