Apache实现一个IP配置多个站点

在日常的网站发布中很多情况下都无法做到一个IP对应一个站点,在IP4的情况下IP的资源是相对有限的。然而作为最流行的Apache自然也考虑到这种情况,那么接下来看看apache怎么实现一个ip配置多个站点。

在httpd.conf中找到 "# Virtual hosts",并添加如下行

ServerName 你的域名

HostNameLookups off

NameVirtualHost 192.168.1.104
 
<VirtualHost 192.168.1.104>
    ServerName www.php.com
    ServerAdmin test@gmail.com
    DocumentRoot /data/www1/
    DirectoryIndex index.php index.html index.htm index.shtml
    Errorlog /usr/local/apache2/logs/wwwError_log
    Loglevel warn
    HostNameLookups off
    <Directory /data/www1/>
     AllowOverride None
     Order allow,deny
     Allow from all
    </Directory>
</VirtualHost>
 
<VirtualHost 192.168.1.104>
    ServerName bbs.php.com
    ServerAdmin test@gmail.com
    DocumentRoot /data/www2/
    DirectoryIndex index.php index.html index.htm index.shtml
    Errorlog /usr/local/apache2/logs/bbsError_log
    Loglevel warn
    HostNameLookups off
    <Directory /data/www2/>
     AllowOverride None
     Order allow,deny
     Allow from all
    </Directory>
</VirtualHost>

上述的例子IP都是192.168.1.104,域名分别是www.php.com和bbs.php.com。因而可知apahce是通过ServerName来识别同一个IP下的不同站点的。

在实际应用中你只需要将IP192.168.1.104、域名www.php.com和bbs.php.com分别改成你的IP和域名即可。

很多朋友问为什么输入网站的ip为什么不能访问网站,输入域名倒可以访问网站?道理也在这里,像这种情况,一个ip对应的几个站点,是通过ServerName来识别同一个IP下的不同站点的,而输入ip地址主机自然是不知道你要访问哪个站点,故无法访问。而现实中,很多的虚拟主机上绑定的是几十甚至几百的网站。