代码之家  ›  专栏  ›  技术社区  ›  radicaled

Apache 2.4.29和mod_jk 1.2.42未转发到tomcat

  •  4
  • radicaled  · 技术社区  · 7 年前

    我正在使用mod_jk 1.2.42对tomcat 8.5.11进行apache 2.4.29安装。
    我的问题是apache+mod_jk没有将请求转发给tomcat。
    我们之前有一个apache安装(2.2.31),在同一个tomcat上安装了mod_jk(1.2.25),并且工作正常。

    这是我们在mod_jk上遇到的唯一错误/异常。日志文件:

    [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的组成部分。形态:

    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
    

    这是工人们。属性:

    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
    

    任何想法都将不胜感激。

    3 回复  |  直到 7 年前
        1
  •  2
  •   John T    7 年前

    我也有同样的问题,这让我疯狂。它开始于我加载LetsEncrypt。。。以下是对我有效的修复:在每个VirtualHost部分中添加一个“JkMountCopy On”。

    例如:

    在/etc/httpd/conf.d/文件夹中,编辑任何。具有VirtualHost定义的conf文件(grep VirtualHost*.conf)-可能有多个:

    <VirtualHost _default_:443>
    
    #Add the following line
    JkMountCopy On 
    ....
    

    这只是一个例子,它可能不会说 违约 :443-正如您可能猜测的那样,另一个用于端口80。如果在主httpd中有VirtualHost部分。conf,它可能也需要它。我没有。

        2
  •  1
  •   Agita    4 年前

    让我再为Apache中的问题添加一个可能的原因=>通过AJP的Tomcat通信问题。

    在我的例子中,我在机器上安装了libapache2 mod jk库,它创建了一个单独的workers文件。我检查了主机上的当前文件:

    find / -name "workers.properties"
    

    并获得:

    /etc/apache2/workers.properties
    /etc/libapache2-mod-jk/workers.properties
    

    所以之前一直都是这样:

    • 我使用了错误的文件(在libapache2 mod jk中),因为我没有将Apache指向它。
    • Apache使用了它的默认文件(在apache2内部)和配置中的错误工作标识符,因为我从错误的文件中获取了它。

    以防你面临类似的问题,并且你确信你已经尝试了一切-检查这一个。

        3
  •  0
  •   fhr    7 年前

    对于之前的回答,我很抱歉。
    您必须检查服务器中AJP 1.3连接器的超时和maxPostSize*值。Tomcat的xml文件。

    *从Tomcat 7和Superior中,maxPostSize值必须小于0才能禁用它。

    当做