Apache+tomcat ajp模式转发域名 http://www.tuicool.com/articles/YruA7f
不知道为什么,我自己没配置成功!!!!!!!
先说下使用环境:
有两个以上的tomcat或者多个应用服务器,然后多个域名指向一个外网ip,由外网ip再转发到域名分别对应的tomcat上。(无需加载第三方插件)
配置:
1、2.2以上的Apache+5.5以上的tomcat 安装不写。
2、打开Apache安装目录下的/conf/httpd.conf文件:
打开以下三个模块(将前面的#号去掉就行了)
1>LoadModule proxy_module modules/mod_proxy.so
2>LoadModule proxy_http_module modules/mod_proxy_http.so
3>LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
加载httpd-vhosts.conf配置文件,也是去掉#
4>Include conf/extra/httpd-vhosts.conf
3、打开Apache安装目录下的/conf/extra/httpd-vhosts.conf文件:
可以直接清空文件,然后加上配置:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
NameVirtualHost *:80 <span class="tag"><<span class="title">VirtualHost</span> *<span class="attribute">:80</span>></span> ServerName a.xxx.com ServerAlias xxx.com DirectoryIndex index.html index.htm index.jsp login.jsp ProxyPass / ajp://192.168.0.246:8009/ retry=3 ProxyPassReverse / ajp://192.168.0.246:8009/ retry=3 <span class="tag"></<span class="title">VirtualHost</span>></span> <span class="tag"><<span class="title">VirtualHost</span> *<span class="attribute">:80</span>></span> ServerName b.xxx.com ServerAlias xxx.com DirectoryIndex index.html index.htm index.jsp login.jsp ProxyPass / ajp://192.168.0.246:8009/ retry=3 ProxyPassReverse / ajp://192.168.0.246:8009/ retry=3 <span class="tag"></<span class="title">VirtualHost</span>></span> <span class="tag"><<span class="title">VirtualHost</span> *<span class="attribute">:80</span>></span> ServerName c.ccc.com ServerAlias ccc.com DirectoryIndex index.html index.htm index.jsp login.jsp ProxyPass / ajp://192.168.0.245:8009/ retry=3 ProxyPassReverse / ajp://192.168.0.245:8009/ retry=3 <span class="tag"></<span class="title">VirtualHost</span>></span> |
上面是三个项目的配置,其中a.xxx.com和b.xxx.com在一个服务器,一个tomcat里面。c.ccc.com在另外一台服务器里面。因此可以看到这样的配置是非常灵活的,不管项目在哪里,只要tomcat启动了,找到对应的ajp的端口号(如例子里的ajp://192.168.0.246:8009/),注意是ajp的端口号,不是tomcat的访问端口号8080。
4、配置tomcat的主机名和httpd-vhosts.conf一致
1 2 3 |
<Host name="a.xxx.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="D:\\apache-tomcat-6.0.41\webapps\xxxx" path="" reloadable="true" /> </Host> |
其中 name里的 a.xxx.com 和 ServerName a.xxx.com 对应。 docBase为项目地址
5、启动tomcat、启动 Apache。ok。。。
注:如果域名没有解析、映射出去,那么到 C:\WINDOWS\system32\drivers\etc 打开hosts文件,在最后添加
1 2 3 |
127.0.0.1 a.xxx.com 127.0.0.1 b.xxx.com 127.0.0.1 c.xxx.com |
这样是模拟三个域名都访问 Apache服务器的对应ip的80端口( 12.34.56.78:80 )然后由 Apache转发到对应的tomcat服务器上去。