绝想首页

随便写点 2010年2月10日 话说如何配Mod_JK

马亮 [柔情] 2013-03-29 17:18:16 星期五 晴天 查看:152 回复:0 发消息给作者

之前在公司配mod_jk,看教程很简单,但就是实现不出来,官方文档中提到了Apache的虚拟主机,我也注意到了,但当时怎么都没发现,抓心挠肝之下,去入职培训时的那个班群里面吼了一句,还好,kentwang接话了,哈哈,像抓到救命稻草一样,kentwang在看了我的配置之后,深深的怀疑虚拟主机。我这是才认真的去检查了一下,发现一个conf文件被Include进来,里面都是虚拟主机。要不是kentwang,不知道我还有多久才会去仔细的检查。

/*--------------------------------我是分割线--------------------------------*/
回顾一下这次配置mod_jk的经历。


如果Apache能够把Servlet的请求自动的转发给Tomcat,那么就相当于Apache能够支持Servlet请求。并且,对于用户来说,他在访问Tomcat中的服务时,能够沿用Apache所使用的域名,并且不需要输入Tomcat的端口号,如8080

 

下载合适的插件

Apache组织对此提供了插件,mod_jk.so。下载的时候,需要注意插件的版本与Apache版本兼容。

比如,服务器上的Apache版本为2.2.3 。我下载的mod_jk.somod_jk-1.2.28-httpd-2.2.X.so

文件名中的红色部分,标识该版本的so所支持的Apache版本。

 

Apache中加入配置

Apache中对mod_jk 进行配置,可以分三步:

1.       Apache加载mod_jk

2.       Apache知道,对需要转发的链接,如何进行转发

3.       Apache知道对哪些链接,通过mod_jk进行转发

 

下面依次对上面进行描述。

1 Apache加载mod_jk

httpd.conf中,加入下面的命令,就可以加载mod_jk

#加载so文件,指定mod_jk.so的路径。

LoadModule jk_module modules/mod_jk.so

#加载workers的配置文件

JkWorkersFile conf/workers.properties

#指定mod_jk 日志文件

JkLogFile logs/mod_jk.log

JkLogLevel info

JkOptions +ForwardKeySize +ForwardURICompat -ForwardDirectories

JkRequestLogFormat "%w %V %T"

 

       workes.properties文件中,将会配置若干个worker实例,每一个worker实例都会按照我们配置的规则,将Apache交给它的链接,进行转发。

 

2 Apache知道,对需要转发的链接,如何进行转发。

       workers.properties文件中,配置如何对需要转发的链接,进行转发。

       # Defining a worker named worker1 and of type ajp13

worker.list=worker1

# Set properties for worker1

worker.worker1.type=ajp13

worker.worker1.host=localhost

worker.worker1.port=8009

       这段代码,定义了一个worker实例,idworker1,在Apache的其他地方,就可以通过worker1对该worker实例进行引用。

       对于worker1的属性配置,表示该worker1将会把收到的请求,通过ajp1.3协议,转发到localhost8009端口。

      

       3 Apache知道对哪些链接,通过mod_jk进行转发

       下面要让Apache知道对哪些链接进行转发,通过JkMount关键字进行定义。因为Apache中通常会定义Virtual Host,所以JkMount需要在Virtual Host中进行定义,才能够对通过server name进行访问的请求生效。

       比如,Apache配置了一个VHServer Namepnr.tenpay.com

       我在pnr.tenpay.com定义的节点中加入语句:

             

        JkMount /pnrbill_webApp/pages/*.jsp worker1

        ServerAdmin webmaster@tencent.com

        DocumentRoot /usr/local/cftair/htdocs/b2bPNR

        ServerName   pnr.tenpay.com

        ScriptAlias  /cgi-bin/ "/usr/local/cftair/cgi-bin/"

        DirectoryIndex  Login.shtml index.shtml index.html

 

        ErrorLog     "|/usr/local/apache/bin/rotatelogs /data/logs/cftair_err_%Y%m%d 86400"

        CustomLog    "|/usr/local/apache/bin/rotatelogs /data/logs/cftair_access_%Y%m%d_%H.txt 3600"  ClickFlowLogFormat env=!dontlog

   

        Options +Includes FollowSymLinks IncludesNoExec

        AllowOverride Options

        Order allow,deny

        Allow from all

   

    XBitHack on

    AddType text/html .shtml

    AddOutputFilter INCLUDES .shtml

 

       表示,当Apacheip.ip.ip.ip这块网卡上,收到通过pnr.tenpay.com域名进入的请求时,会应用JkMount的规则,将/pnrbill_webApp/pages/目录下的jsp请求,都通过worker1实例进行转发,即,转发到localhost地址的8009端口。

       那么当Apacheip.ip.ip.ip这块网卡上,收到通过air.qq.com域名进入的请求时,即便是请求/pnrbill_webApp/pages/目录下的jsp,由于Apache没有配置此时如何转发,所以会返回错误:“文件无法找到”。

      

Tomcat的配合

       转发的过程自然不能缺少Tomcat的配合,Tomcat的配合工作很简单,就是能够在与Apache约定好的地址和端口等待请求,并保证使用的协议一致。

       按照上面的配置,Apache会把请求,按照AJP1.3协议,转发到localhost8009端口。那么在ip.ip.ip.ip服务器上,Tomcat对本机的8009端口,使用AJP1.3协议进行监听就可以了。

       Tomcat中,AJP1.3 Connector是默认存在的,代码如下:

 

相关文档:

http://www.juexiang.com/tomcat/tomcat3.2-4.0/tomcat-3.2.3/doc/tomcat-apache-howto.html

http://tomcat.apache.org/connectors-doc/

 

/*--------------------------------我是分割线--------------------------------*/

附图一张:




类别:默认分类 查看评论
顶一下(32 写日记 1236943 224297
上一篇:替凯瑟琳写日记(二)下一篇:冷静?
分享排行

 

 

留住已经逝去的峥嵘岁月 记住曾经绽现的万种风情 在记忆即将淡漠的时候 来把这些重新回味

Copyright (C) 2008-2014 www.juexiang.com, All Rights Reserved.

京ICP备2023001011号-3   京公网安备11010802011908号

客服QQ 1017160561 违法和不良信息举报电话 13148464312 邮箱 1017160561@qq.com