服务器中有两个不同的项目siteA和siteB,我们需要把顶级域名www.siteA.com绑定到项目siteA,将二级域名siteB.siteA.com绑定到项目siteB中。于是,我们使用了基于名称的虚拟主机来进行设置。
首先,在对服务器进行配置之前,先确保你的域名已经进行正确的解析。针对以上的情景,我们需要将为顶级域名和二级域名在域名服务商中进行解析(假设服务器IP为121.199.XXX.XXX):
主机记录 | 记录值(IP) |
siteB | 121.199.XXX.XXX |
www | 121.199.XXX.XXX |
我们的服务器系统为ubuntu12,apache的web服务器,下面以该系统为基础对服务器配置进行说明:
(1)安装好apache以后默认有一个叫default的虚拟主机。在 /etc/apache2/sites-enabled中,存在一个000-default 的软链接文件,实际连接的是 /etc/apache2/sites-available 目录中的 default 文件,这是一个默认的配置文件,它指向的是服务器的站点根目录/var/www,我们可以模仿该配置文件创建两个新的虚拟主机。
(2)复制虚拟主机的默认配置文件,siteA的虚拟主机名称为www.siteA.com,siteB的虚拟主机名称为siteB.siteA.com,
# copy /etc/apache2/site-available/default /etc/apache2/site-available/www.siteA.com
# copy /etc/apache2/site-available/default /etc/apache2/site-available/siteB.siteA.com
复制好后,我们打开www.siteA.com的配置文件,将其修改为如下:
<VirtualHost *:80>
ServerName www.siteA.com
ServerAdmin admin@email.com
DocumentRoot /var/www/siteA
<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
# Commented out for Ubuntu
#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/siteA_error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/siteA_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>
主要更改有上的红色字体内容,具体的含义如下:
- `ServerName www.siteA.com`