配置apache + tomcat 绑定泛域名

前段时间,写了关于如何将Apache与tomcat整合起来一起提供服务,Apache提供静态网页的访问支持,tomcat则提供动态页面如jsp,servlet的支持能力。
这几天有一个同仁在邮件里面问我关于如何配置apache + tomcat 绑定泛域名,这几天也考完试了,所以就整理整理了思维,开始解决这个问题。
在解决之前,需要对几个概念作一些解释:什么是泛域名
比如说你有一个域名:gngngn.com 那么,你希望所有的以 gngngn.com 结尾的URL都指向同一个地方,比如说你的主网是
www.gngngn.com,你希望你的test.gngngn.com,test2.gngngn.com 也都
指向
www.gngngn.com,这个就是泛域名解析,即 *.域名 解析到同一独立IP,在域名前添加任何子域名,均可访问到所指向的WEB地址。
OK,现在知道了什么是泛域名解析了,我们现在开始来进行泛域名解析的工作。
要完成泛域名解析,需要我们做两个方面的工作,第一方面,域名那部分的处理,第二方面,就是服务器的处理。
在域名的管理部分,要对域名进行泛域名解析的设置,这个是在你申请的域名服务那里进行操作。各个服务商的操作可能不太会一样,但其核心都是一致的,即将*.你的域名 映射到你的服务器的IP。
上一部分完成之后,就开始了下一部分的工作,如何对Apache服务器进行设置,让其能够满足泛域名解析。在这里还要提到一点,这里实现泛域名解析与TOMCAT的关系不大。APACHE与TOMCAT的配合在之前的文章已经讲过,配合的核心就是设置什么样的请求会转交给TOMCAT进行处理,所以这里基本就不再提TOMCAT。
要对Apache进行泛域名设置,那么就要先了解如何对Apache进行域名绑定。这里先解释一样,什么是域名绑定。
域名绑定通俗的讲,就是将你的域名与你的服务器绑定到一起。比如说,你有两个域名 
www.gngngn.com  www.r6me.com,但是,你只有一台服务器,这个服务器只有一个IP,那么如何做到www.gngngn.com访问到的是你设置的a网站,www.r6me.com访问到的是你设置的b网站呢? 在域名管理的时候,设置域名的时候,只是将一个域名和一个IP绑定到一起,你访问www.gngngn.com与访问www.r6me.com都是指向的同一个IP,你如何保证其访问到的是不同的站点? 这个就是域名绑定的问题了。当然,要做到域名绑定,还需要做另外一个事情,那就是在Apache中建立虚拟主机,当建立虚拟主机的时候,将域名与你建立的虚拟主机进行对应,那么就可以做到域名绑定了。这个过程的基本思想就是:
浏览器访问URL->域名服务器对URL进行解析,找到对应的IP,向对应IP的机器发送请求->Apache服务器接收到请求,分析URL,找到对应的虚拟主机->访问完成
现在原理基本上清楚了,我们开始进行虚拟主机与域名绑定的操作,其实挺简单,几句话就搞定。
我是在UBANTU下面进行的操作,之前在WINDOWS下面,那个配置文件太散乱了,并不如LINUX下面清楚,这也是网上曾经有个兄弟说Apache泛域名解析不成功的一个重要原因(在这里,也小鄙视下微软这个垃圾)。
在UBANTU下面,打开 /etc/apache2/sites-available/default 文件,这个文件就是对于Apache的虚拟主机进行配置的文件。
里面内容如下:
NameVirtualHost *
<VirtualHost *>
    ServerAdmin 
webmaster@localhost
    DocumentRoot /var/www/
    ServerName localhost
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
在这里,*表示了进行动态IP绑定,因为有的时候,服务器的IP会更换,如果设置了动态IP绑定,那么只要是指向本机的IP的请求,都会得到服务器的响应(关于IP绑定的请参考其它资料,这里不详细讲明)
在这里的配置,是Apache安装好后的一个默认的主机配置,ServerName可以设置成我们的域名,那么发送过来的请求就可以对应到相应的虚拟主机了,DocumentRoot /var/www/  说明了虚拟主机对应的访问文件目录。
我们对这个文件进行修改如下:
NameVirtualHost *
<VirtualHost *>
    ServerAdmin 
webmaster@localhost
    DocumentRoot /var/www/
    #yuana.vicp.net是我申请的域名,添加了A记录到我的IP
    ServerName yuana.vicp.net
    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>
    <Directory /var/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
        # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined
    ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

<VirtualHost *>
    DocumentRoot /home/yuan/program/tomcat-6.0.14/webapps/yuan/
    #hustyuana.vicp.net是我申请的域名,添加了A记录到我的IP
    ServerName hustyuana.vicp.net
    DirectoryIndex index.html    
    <Directory />
                Options FollowSymLinks
                AllowOverride None
        </Directory>
        <Directory /home/yuan/program/tomcat-6.0.14/webapps/yuan/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                #RedirectMatch ^/$ /apache2-default/
        </Directory>
</VirtualHost>

在这里,虚拟主机,及其访问目录都已经设置完毕,现在将Apache重启,sudo /etc/init.d/apahce2 restart
在Firefox里面输入 
http://test.gngngn.com 及输入http://r6me.gngngn.com,可以看到现在访问到的内容已经不一样了。
注:我是在
www.oray.cn上面申请的免费域名进行的测试,在配置进,也可以到这个网站上面申请域名服务进行测试。

完成前面的工作之后,可以开始最重要的工作了,当然,这个工作其实也挺简单的。
在前面说到,我们在域名管理的时候,可以对域名进行泛域名解析,即*.gngngn.com都发向同一个IP地址,到了这里,我们的工作其实已经很明确了,即发过来的*.gngngn.com,如何对应到我想要它们对应的虚拟主机上。
这里就要对虚拟主机进行配置ServerName 要配置成 *.gngngn.com ,它的含义就是所有的 *.gngngn.com之类的url都对应到这个主机上面,如test.gngngn.com, test2.gngngn.com都会对应到这个虚拟主机上面,到此,完成所有的配置了,你可以在浏览器里面对这些进行测试了,Good luck!
在这里,还有另外一个问题需要说明,比如前面的配置文档,我们配置了两个虚拟主机,这里有一个默认虚拟主机的意义。是什么意思呢?也就是说,如果一个URL指向的是我们的服务器IP,但是,它的URL与我们建立的两个虚拟主机的ServerName都不同,这个时候,Apache的默认主机会提供服务,在上面我们的配置中,www.gngngn.com会提供默认服务。在这里将这个提出来,是因为这个地方不清楚的话,有时候会比较混乱,在网上看到一些人问的问题,其实根源就在这里。

最后,感谢网上的好友们,谢谢你们的关心,也很高兴能与你们交流。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值