论文导读:其二级域名为:username.domainname.edu.cn。是一种UNIX操作系统。源于NCSAhttpd服务器。
关键词:二级域名,FreeBSD,Apache
引言
域名(DNS)是Internet基石之一,DNS负责在IP地址(例如202. 205. 11. 71)与域名(例如www.edu.cn)之间的进行转换,几乎所有的Internet 的应用都使用DNS,这其中包括WWW、电子邮件、FTP、远程终端等。随着互联网接入的迅速普及,很多接入单位希望能够对外提供多种WEB应用,如高校需在本地服务器向每位教师(甚至每位学生)提供自己的个人网站,其二级域名为:username.domainname.edu.cn。
FreeBSD是一种UNIX操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支,它支持 x86 兼容(包括 Pentium 和 Athlon™)、amd64 兼容(包括Opteron™、Athlon 64 和 EM64T)、 Alpha/AXP、IA-64、PC-98以及 UltraSPARC架构的计算机。它运行在Intel x86 family兼容处理器、DEC Alpha、Sun微系统的UltraSPARC、Itanium (IA-64)和AMD64处理器上。FreeBSD被普遍认为是相当可靠和稳定的,它源代码公开并且免费,具有充当高性能服务器的能力,即使在负载最重的情况下它也有出色的表现。FreeBSD能非常高效地利用系统内存,快速响应成千上万并发的用户进程。与昂贵的商业操作系统相比,用一台高速PC机,配以FreeBSD系统和大量的免费应用程序构成一台Internet/Intranet服务器,是一个很不错的具有非常高性价比的明智选择。国内外很多著名互联网服务提供商,如YAHOO和HOTMAIL等,以及国内象SINA(新浪)和163(网易)等都大量采用FreeBSD服务器来支持他们的核心业务。
Apache源于NCSAhttpd服务器,经过多次修改,现已成为世界上最流行的Web服务器软件之一。它可以运行在几乎所有广泛使用的计算机平台上。免费论文网。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。
一、FreeBSD+Apache环境搭建
在FreeBSD的官方网站(www.freebsd.org)下载最新的FreeBSD光盘映像文件,目前FreeBSD的最新版本是8.0,把从网上下载到的FreeBSD光盘映像文件恢复到光盘后,使用该安装光盘开始FreeBSD的安装,由于系统主要提供的是网络服务,从安全角度考虑,一般采用最小化方式安装,即在安装过程中出现“choose Distributions”(选择安装组件)对话框时,选择“Minimal”(图1)。
在FreeBSD下安装软件,有三种安装方式:一种是使用binary 文件或原始代码进行传统的安装;一种是采用package安装软件方式;最后一种是port安装方式。port 就是使用原始码来安装软件。免费论文网。只要进入 /usr/ports/ 里想找到要安装的软件目录中,输入指令 “make install”,系统就可以自动完成安装,FreeBSD本身己经定义了安装该软件所须的步骤、所要求的其它套件。不管是 package 或是 ports,当安装的软件需要依靠其它软件才能继续安装时,它们会自动安装该软件。所有安装好的软件都将记录在 /var/db/pkg 中,日后如果要移除软件时,可以用一个简单的指令 pkg_delete 加上软件名称就可以了。与package相比,ports的优点在于可以根据本地机器的实际需求灵活进行需求扩充,而package 为了要在多数的计算机执行,需考虑兼容性问题,通常编译的比较保守,其不能根据实际需求扩充功能。为了能根据实际需要配置Apache和自动安装所需套件,可采用port方式进行安装,执行以下指令即可完成安装:
# cd /usr/ports/www/apache22
# make install clean
二、基于rewrite_module实现二级域名的解释
Apache的rewrite_module模块的作用是当用户的Web请求最终被导向到Web服务器的Apache守护进程,Apache根据配置文件判断该请求是主配置还是虚拟主机,再根据用户在浏览器中请求的URL来匹配ApacheURL Rewrite,并且根据实际的请求路径匹配中的Apache URL Rewrite,最后把请求的内容传回给用户。该响应可能有2种。
1、将请求内容外部重定向(Redirect)到另一个URL。
让浏览器再次以新的URL发出请求(R=301或者R=302,临时的或是永久的重定向)。
如,一个网站有正规的URL和别名URL,对别名URL进行重定向到正规URL,或者网站改换成了新的域名,则把旧的域名重定向到新的域名。
2、由Apache内部子请求代理产生新的内容送回给用户。
这是Apache内部根据重写后的URL,通过代理模块请求内容并将最终内容送回给客户,客户端浏览器不必再次请求,浏览器中的URL不会被重写,但实际内容由Apache根据ApacheURL Rewrite后的URL生成。
从以上两种响应可以得到:如果把一个有泛域名解析的顶级域名指向该服务器,利用rewrite_module的URL重定向功能即可获得指向多个二级域名(理论上可以无限多个)。实现具体方法为:
1、把一个有泛域名解析的顶级域名指向该服务器
2、在Apache的配置文件httpd.conf 中打开 mod_rewrite,即把“#LoadModule rewrite_module'modules/mod_rewrite.so'”中前面的“#”号删除。
3、在Apache的配置文件httpd.conf末尾添加以下代码:
RewriteEngine on //打开重写引擎
Rewriteloglevel 9 //设置日志级别
Rewritelog /usr/local/apache/logs/rewrite.log //指定重写log文件
RewriteMap lowercase int:tolower //把大写字母转换为小写字母
RewriteMap vhost txt:/usr/local/etc/vhost.map//定义重写映射文件
RewriteCond ${lowercase:%{SERVER_NAME}} ^(.+)$ //定义规则条件,可以通过检查HTTP_REFERER,REQUEST_FILENAME,HTTP_HOST等实现。
RewriteCond ${vhost:%1} ^(/.*)$ //定义规则条件。
RewriteRule ^/(.*)$ %1/$1 //定义重写规则
4、在/usr/local/etc下创建一个文件: vhost.map
内容为:
user1.domain.com /usr/local/www/data-dist/user1
user2.domain.com /usr/local/www/data-dist/user2
user3.domain.com /usr/local/www/data-dist/user3
...
usern.domain.com /usr/local/www/data-dist/usern
以上部分的格式是:' 域名+空格+绝对路径' 的形式。
5、在服务器网站根目录 /usr/local/www/data-dist 下,创建对应目录:user1 , user2 , user3,...usern。
完成上述相关设置后,用户可以通过浏览器访问 user1.domain.com,实际访问的就是/usr/local/www/data-dist/user1 目录下的文件。而且,你可以随时更改 vhost.map 来增加、删除、修改你的二级域名和所指向的实际路径,而不需重启 apache。
三、利用 Apache 的mod_vhost_alias实现二级域名的解释
Apache中的mod_vhost_alias模块通过将HTTP请求中的IP地址和/或'Host:'头内容转换为所要提供服务的文件路径名来创建动态的虚拟主机配置。这样的做法,使得应用配置大量相似的虚拟主机变得更为容易。
该模块中的所有指令都用于将字符串替换为路径名。被替换的字符串(以后称为'name')可以是服务器名或者是'点数字'格式的虚拟主机IP地址。免费论文网。替换操作由printf格式修饰符控制,该修饰符有以下几种格式:
%%:插入一个百分号(%)
%p:插入虚拟主机的端口号
%N.M:插入名称(或者名称的一部分)
N和M被用来指定name中的子字符串。N从name中用小数点分隔的某部分中选取,而M是从N选中的字符串中选取部分字符。M是可选的且默认为'0';小数点当且仅当M存在时才必须书写。替换操作如下(表一):
0 |
整个name |
1 |
第一部分 |
2 |
第二部分 |
-1 |
最后一部分 |
-2 |
倒数第二部分 |
2+ |
从第二部分开始到最后的所有部分 |
-2+ |
倒数第二部分以及之前的各部分 |
表一
实现具体方法为:
1、把一个有泛域名解析的顶级域名指向该服务器
2、在Apache的配置文件httpd.conf 中打开vhost_alias_module,即把“#LoadModule vhost_alias_modulemodules/mod_vhost_alias.so”中“#”删除。
3、添加httpd.conf末尾处添加以下代码:
<VirtualHost 127.0.0.1:80>
ServerName domain.com//服务器域名
UseCanonicalName Off// Apache使用用户端提供的主机名和端口号
VirtualDocumentRoot /usr/local/www/%0 //设置二级域名指向规则
</VirtualHost>
4、重启Apache使配置文件生效。
假设*.domain.com指向了服务器,那么user1.domain.com对应服务器的目录为/usr/local/www/user1.domain.com,user2.domain.com对应服务器的目录为/usr/local/www/user2.domain.com,如此类推。以后如需新建站点,只要建相应目录就可以了,比如新建 new.abc.com,那么只要创建目录 /usr/local/www/new.abc.com即可,且不用重启Apache。
四、结束语
使用rewrite_module模块实现二级域名解析,增删域名不需重启Apache,通过修改vhost.map文件来增加、删除、修改二级域名和所指向的绝对路径;而使用mod_vhost_alias模块实现二级域名解析,修改域名指向路径需重启Aapache,增加、删除、修改二级域名可直接在系统配置路径下实现。
本文介绍了在FreeBSD环境下通过Apache实现二级域名解析的两种方法,并给出具体的实现步骤。在FreeBSD环境下通过Apache实现二级域名解析,可以在保证性能和安全性的情况下,可以大大减少开销,减少维护管理工作量。
参考文献:
1.Apache1.3User'sGuidehttp://www.apache.org
2.赵岩岩.虚拟主机在校园网中的应用研究[J].齐齐哈尔大学学报,2008,(01).
3.傅宇旭.Apache服务器配置和管理[M].北京:清华大学出版社,2002.
|