对于有多个域名,但只有一台主机的情况,可以用apache2虚拟主机,解决多域名无法对应问题。对于笔者来说,虚拟主机不仅解决了多域名问题,而且有域名转发功能。通常情况下,若是主机作邮件服务器,在进行域名解析之后,“imap.xxx.com”或者“pop3.xxx.com”亦可以访问到主机(或者作其它设置可以避免)。通过apache2虚拟主机功能,就可以有效避免这种情况。
一、环境
Debian Linux 7.0 amd64
域名:abc.com, def.com, xyz.com
以上abc.com, def.com已指向服务器IP
二、目的
1、通过abc.com和def.com可以访问服务器不同的目录,如www.abc.com访问/var/www/abc,www.def.com访问/var/www/def
2、访问xyz.com时指向abc.com
三、步骤
1、安装apache2
# apt-get update && apt-get install apache2
2、修改配置文件
(1)在/etc/apache2/sites-enabled下面,复制默认000-default为三个域名创建配置文件,参照网友所说,为方便其见,配置文件都以域名命名,之后,则该目录下有四个文件:000-default, abc.com, def.com, xyz.com。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</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 ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
(2)分别修改abc.com、def.com和xyz.com三个配置文件,在第二行,也就是“ServerAdmin webmaster@localhost“下面添加如下:
ServerName www.XXX.com
XXX代表你的域名如,abc或者def或者xyz
(3)修改abc.com,第四行”DocumentRoot /var/www“及第九行”<Directory /var/www/>“,分别修改相应内容为“/var/www/abc”“/var/www/abc/”。参照修改def.com
(4)修改xyz.com,在文件末</VirtualHost>以上添加行“Redirect / http://www.abc.com”
(5)进入/etc/apache2/sites-available,创建上述三个文件的链接,如:ln -s ../sites-enabled/abc.com ./abc.com
至此,虚拟主机配置完成,在相应目录添加内容,并重启apache2服务,可完成上述目的。