设为首页 收藏本站
查看: 624|回复: 0

[经验分享] apache分发不同tomcat的方法(非集群)

[复制链接]

尚未签到

发表于 2017-1-10 10:08:16 | 显示全部楼层 |阅读模式
  场景:
  现有一台服务器部署了两个Tomcat,一个端口8080,另一个端口8088。
  并且注册了两个域名都指向了这台服务器。
  改造前,只能够使用www.cooltain1.com:8080访问tomcat1, 使用www.cooltain2.com:8088访问tomcat2。
  这种带端口的访问方式很不友好。
  希望改造之后:
  访问时不再需要带端口,
  能够www.cooltain1.com 访问tomcat1
  能够www.cooltain2.com 访问tomcat2
  1、配置Tomcat01的 conf/server.xml

    <Connector executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"  redirectPort="8443" />
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    此处HTTP/1.1还是按原来的方式配置,这里要注意的只是AJP/1.3的配置,  tomcat01的AJP/1.3协议配置的端口是8009
  2、配置Tomcat02的 conf/server.xml

    <Connector executor="tomcatThreadPool"
port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"  redirectPort="8443" />
<Connector port="8109" protocol="AJP/1.3" redirectPort="8443" />
    tomcat02的AJP/1.3协议配置的端口是8109

 

 

(注:以下步骤的3~9来自于原贴http://blog.csdn.net/grubbyfan/article/details/3321190,并结合本文进行一下修改)
 
3. 下载并安装Apache,下载地址:Apache下载
    (本示例使用的版本是httpd-2.2.25-win32-x86-no_ssl.msi)
    注:apache运行时,务必使用80端口。
 
4. 下载mod_jk,下载地址:mod_jk下载
    注意:下载的mod_jk版本要与Apache版本对应。    
  (本示例使用的版本是tomcat-connectors-1.2.40-windows-i386-httpd-2.2.x.zip)
    
 
5. 解压mod_jk,得到mod_jk.so文件,复制到Apache的modules目录下。
 
6. 修改Apache的conf目录下的httpd.conf文件,搜索“LoadModule”配置项,并在最后一条LoadModule配置项的后面加上下面的代码: 


  • # 加载 mod_jk 模块
  • LoadModule jk_module modules/mod_jk.so
  •  
  • # 指定 mod_jk 模块所需的配置文件 workers.properties 的位置
  • JkWorkersFile conf/workers.properties
  •  
  • # 指定 mod_jk 模块的日志文件位置
  • JkLogFile logs/mod_jk.log
  •  
  • # 指定 mod_jk 模块的日志级别
  • JkLogLevel warn
  •  
  • # 指定 mod_jk 模块的日志格式
  • JkLogStampFormat "[%a %b %d %H:%M:%S %Y]


 
7. 在conf目录下创建workers.properties文件,内容如下:


  • # Define 2 real worker using ajp13
  • worker.list = tomcat01,tomcat02
  •  
  • # Set properties for tomcat01 (ajp13)
  • worker.tomcat01.type = ajp13
  • worker.tomcat01.host = 127.0.0.1
  • worker.tomcat01.port = 8009
  • worker.tomcat01.lbfactor = 50
  • worker.tomcat01.cachesize = 10
  • worker.tomcat01.cache_timeout = 600
  • worker.tomcat01.socket_keepalive = 1
  • worker.tomcat01.recycle_timeout = 300
  •  
  • # Set properties for tomcat02 (ajp13)
  • worker.tomcat02.type = ajp13
  • worker.tomcat02.host = 127.0.0.1
  • worker.tomcat02.port = 8109
  • worker.tomcat02.lbfactor = 50
  • worker.tomcat02.cachesize = 10
  • worker.tomcat02.cache_timeout = 600
  • worker.tomcat02.socket_keepalive = 1
  • worker.tomcat02.recycle_timeout = 300


注:在这里tomcat01与tomcat02配置的端口就是前面配置好的。

8. 在httpd.conf文件中增加虚拟主机配置



  • NameVirtualHost *:80
  •  
  • <VirtualHost *:80>    
  •     ServerName www.cooltain1.com  
  •     ServerAlias www.cooltain1.com    
  •     ErrorLog logs/aaa-error_log.txt  
  •     CustomLog logs/aaa-access_log.txt common  
  •     JkMount /* tomcat01 
  • </VirtualHost>
  •  
  • <VirtualHost *:80>    
  •     ServerName www.cooltain2.com  
  •     ServerAlias  www.cooltain2.com    
  •     ErrorLog logs/bbb-error_log.txt  
  •     CustomLog logs/bbb-access_log.txt common  
  •     JkMount /* tomcat02  
  • </VirtualHost>


注意一:NameVirtualHost 指定虚拟主机所使用的IP地址或域名,但是最好是IP地址。使用基于域名的虚拟主机时,NameVirtualHost是必要的指令。NameVirtualHost可以定义多个。 

注意二:所有符合NameVirtualHost或<VirtualHost>标签定义的请求,都会被作为虚拟主机处理,而主服务器将不理会。NameVirtualHost定义了而<VirtualHost>标签没有定义的的请求,服务器会找不到相应的虚拟主机而将无法处理。 所以每个NameVirtualHost定义的参数至少要有一个<VirtualHost>相匹配。

注意三:如果设置NameVirtualHost 或<VirtualHost>为*:80的话,所有针对80端口的请求,都会被虚拟主机处理,请求会根据域名指向某个虚拟主机。如果有来自 80端口的请求,而所请求的域名没有被配置为虚拟主机,那将指向第一个虚拟主机。这样主服务器将无法收到来自80端口的任何请求。为此也要为主服务器配置一个虚拟主机。

注意四:JkMount /* tomcat01的意思是将该虚拟主机下的请求都转发给tomcat01这个worker(上面workers.properties中配置的)对应的应用

 
 
9、重启Apache, 就可以使用 www.cooltain1.com来访问tomcat01 , www.cooltain2.com访问tomcat02.
 

(注:上面步骤的3~9来自于原贴http://blog.csdn.net/grubbyfan/article/details/3321190,并结合本文进行一下修改


 
 
 
附录:我现在还没有服务器,如何在本机做验证?
 
     如果是window,打开文件 "C:\WINDOWS\system32\drivers\etc\hosts
 
在文件未尾追加下面配置
 

127.0.0.1 www.cooltain1.com
127.0.0.1 www.cooltain2.com
 大概意思是,将访问www.cooltain1.com或www.cooltain2.com指向127.0.0.1(也就是本机啦)

[size=1em]有关“hosts”文件更详尽的信息,请自行百度啦~

 

 

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-326419-1-1.html 上篇帖子: Apache Shiro权限框架在SpringMVC+Hibernate中的应用 下篇帖子: Apache与Tomcat的安装与整合之安装篇
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表