配置基于 IP 的虚拟主机

  基于 IP 的虚拟主机是指为每个 Web 站点配置不同的 IP 地址。通常用于有多块物理网卡,或者配置了多个虚拟 IP 的 Web 服务器。

  本文以 apache 2.2 的配置为例,有关基于主机名的虚拟主机的配置,可参考《apache 虚拟主机配置

  配置基于 IP 的虚拟主机,需要在 httpd.conf 配置文件中更改两处,一处为服务器设置监听 IP 和端口,一处为服务器定义虚拟主机块。

  为了方便说明,采用以下环境作为示例:

  机器中配置了三个接口,IP 分别为 192.168.1.201, 192.168.1.202 和 192.168.1.203,分别基于这三个 IP 地址,创建虚拟主机 www.example.com, www.example2.com 及 www.example3.com

 

设置监听 IP 和端口

  打开 httpd.conf 配置文件,找到 Listen 条目,对其作出相应的更改,在本文的例子中,需要让服务器监听三个 IP,即

#Listen 12.34.56.78
#Listen *:80
Listen 192.168.1.201:80
Listen 192.168.1.202:80
Listen 192.168.1.203:80

 

定义 <VirtualHost> 虚拟主机块

  配置许主机块,转到 httpd.conf 文件的最后面,添加以下文本,用于定义三个虚拟主机。

<VirtualHost 192.168.1.201:80>
    ServerAdmin admin@example.com
    DocumentRoot /var/www/html/example
    ServerName www.example.com
    ErrorLog logs/www.example.com-error_log
    CustomLog logs/www.example.com-access_log
</VirtualHost>

<VirtualHost 192.168.1.202:80>
    ServerAdmin admin@example2.com
    DocumentRoot /var/www/html/example2
    ServerName www.example2.com
    ErrorLog logs/www.example2.com-error_log
    CustomLog logs/www.example2.com-access_log
</VirtualHost>
...

  (为了方便管理,熟悉 apache 的用户可以将虚拟主机块定义于外部配置文件中,如定义于 httpd-vhosts.conf 中)

  需要注意 <VirtualHost 192.168.1.x:80> 与定义块中各选项的配置,其中最重要的是 DocumentRootServerName 选项,分别用于定义网站的根目录以及主机名称,千万不要搞错了 :D

  提醒:配置完成之后可以使用 service httpd configtest 命令检查配置文件是否正确,还要记得更改完 httpd.conf 配置文件之后,要重启 httpd 服务才能让新配置生效哦 :D

付费阅读