一、应用场景:
在同一个web容器中部署多个项目,如项目A、项目B等多个项目,没有使用动态二级域前,访问地址是:http://域名(或二级域名)/项目文件夹名名称(即A或B等)。现在需要使用apache进行转发,实现不同二级域名自动指向到不同的项目。如http://A.test.com自动访问A项目。
另外,个别二级域名不需要使用动态二级域名。
二、具体配置
(一)实现动态二级域名
1、准备本地测试域名
在C:\Winnt\System32\Drivers\Etc目录下找到hosts文件,增加A.test.com,B.test.com,other.test.com 3个测试域名。
2、启动mod_rewrite.so
打开conf/httpd.conf文件,开启mod_rewrite.so模块。
3、配置动态二级域名规则
打开conf/httpd.conf文件,增加以下代码
rewriteengine on
RewriteCond %{HTTP_HOST} ^[^.]+\.test\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.test\.com(.*) /$1$2
RewriteLog "logs/rewrite.log"
4、测试动态二级域名
浏览器输入A.test.com顺利访问A项目。配置成功
三、处理个人特殊二级域名
5、启动反向代理
(1)打开conf/httpd.conf文件,开启
mod_proxy.so
mod_proxy_ajp.so两个模块。
(2)conf/httpd.conf文件,增加以下代码
ProxyPreserveHost On
ProxyRequests off
6上述配置二级域名规则改成一下
rewriteengine on
RewriteCond %{HTTP_HOST} !^other\.test\.com$
RewriteCond %{HTTP_HOST} ^[^.]+\.test\.com$
RewriteRule ^(.+) %{HTTP_HOST}$1 [C]
RewriteRule ^([^.]+)\.test\.com(.*) /$1$2
RewriteCond %{HTTP_HOST} ^other\.test\.com$
RewriteRule ^/(.*) http://localhost:8080/$1 [P]
RewriteLog "logs/rewrite.log"
7、测试特殊二级域名
输入other.test.com,顺利代理到http://localhost:8080。
到此为止,配置成功