apache的基于虚拟主机的网站配置实现

来源:互联网 发布:淘宝店铺图标 编辑:程序博客网 时间:2024/04/30 10:12

一、基于多域名的实现

----------

 

1.在网站的根目录的下建立httpd.conf

<VirtualHost 192.168.1.100>

    ServerName phpweb20
    DocumentRoot /var/www/phpweb20/htdocs
    <Directory /var/www/phpweb20/htdocs>
        AllowOverride All
        Options All
    </Directory>

 

    php_value include_path .:/var/www/phpweb20/include
    php_value magic_quotes_gpc off
    php_value register_globals off

</VirtualHost>

2.在apache的主配置文件中加入

 

NameVirtualHost 192.168.1.100
include /var/www/phpweb20/httpd.conf

 

3.在浏览器中输入192.168.1.100即可看到,这个是本机IP

 

二、多端口的实现

--------

 

 

#监听的端口号,如果想一个IP地址多端口控制访问的话必须填写端口
Listen 
81
Listen 
82

#端口81的虚拟主机
<VirtualHost *:81>
    DocumentRoot 
"Webroot/port01"
</VirtualHost>

#端口82的虚拟主机
<VirtualHost *:82>
    DocumentRoot 
"Webroot/port02"
</VirtualHost>

 

apache 默认的是*,这样任何一个本机的IP都可以访问。

 

三、基于多IP的实现

---------

一、基于IP的虚拟主机

这种方式需要在机器上设置IP别名,象上面的例子,在一台机器的
网卡上绑定多个IP地址去服务多个虚拟主机。
若该机器的IP地址为192.168.11.2(account.yourdomain.com),首先
你要设置IP别名(假设用192.168.11.4作为其别名IP)。加下面的行到
/etc/rc.d/rc.local,确保每次启动后自动运行。

#/sbin/ifconfig eth0:0 192.168.11.4 netmask 255.255.255.0 broadcast /
192.168.11.255 up
#/sbin/route add -host 192.168.11.4 eth0:0

然后你需要设置/etd/httpd/conf/httpd.conf文件:

《VirtualHost 192.168.11.4》*
ServerAdmin webmaster@yourdomain.com
DocumentRoot /home/httpd/sales.yourdomain.com
ServerName sales.yourdomain.com
ErrorLog /var/log/httpd/sales.yourdomain.com/error_log
TransferLog /var/log/httpd/sales.yourdomain.com/access_log
《/VirtualHost》

然后分别创建目录
/home/httpd/sales.yourdomain.com,
/var/log/httpd/sales.yourdomain.com
,放相应的网站内容到目录/home/httpd/sales.yourdomain.com下即可,并确保
你内部的DNS指定sales.yourdomain.com的A记录到IP地址192.168.11.4 。

注:这种基于IP的虚拟主机有一个缺点,就是你需要更多的IP地址去服务各自的
虚拟主机,如果你仅仅有一个IP地址,那么你将可以考虑用基于名字的虚拟主机
方案。

 

 

四、在windows下利用DNS来做

 

首先,加载:LoadModule rewrite_module modules/mod_rewrite.so

之后,在apache配置文件中加入:

NameVirtualHost 127.0.0.1:808
<VirtualHost 127.0.0.1:808>
        ServerName localhost
        DocumentRoot D:/AppServ/www
        RewriteEngine Off
</VirtualHost>

<VirtualHost 127.0.0.1:808>
        ServerName phpweb
        DocumentRoot D:/AppServ/www/php20/htdocs
        RewriteEngine Off
        RewriteCond %{REQUEST_URI} !^.*(/.css|/.js|/.gif|/.png|/.jpg|/.jpeg)$
        RewriteRule ^(/.*)$ /index.php
</VirtualHost>

同时确保listen 相应端口

最后, 修改C:/WINDOWS/system32/drivers/etc/hosts

127.0.0.1       localhost

127.0.0.1        phpweb

×记得重启服务器

 

参考文献:

-----

    WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器。使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度。另外,对于个人用户,也可以使用这种虚拟主机方式来建立有自己独立域名的WWW服务器。下面,我就给大家介绍一下如何在Apache下设置各种虚拟主机。

    一、ApacheWWW服务器简介

    ApacheWWW服务器是目前Internet上使用最广的WWW服务器软件。通过灵活的配置,它几乎可以完成您想要的所有功能。

    二、ApacheWWW服务器下基于IP地址的虚拟主机设置

    使用这种虚拟主机方式,首先要在服务器上为每个虚拟主机单独设置一个IP地址。这些IP地址可以通过增加多个网卡或者在一个网卡上设立多个IP地址来完成。有了多个IP地址后,可以采用以下两种方式之一来设置Apache:

    1、为每个虚拟主机运行一份Apache

    采用这种方式,每一份Apache程序可以以单独的用户运行,因此各个虚拟主机之间互不影响。设置这种虚拟主机时,只要为每一份Apache设置一套配置文件就可以了,唯一需要注意的是:必须使用“Listen”语句,强制每一份Apache仅仅在属于“自己”的IP地址上接收服务请求。

    优点:各个虚拟主机之间互不干扰,安全性高。

    缺点:占用系统资源较多。

    2、多个虚拟主机共享同一份Apache

    采用这种方式,各个虚拟主机共享同一份Apache,因此各个虚拟主机之间有一定的影响,尤其是执行CGI程序时,可能会带来一些严重的安全问题。设置这种虚拟主机时,只要为每一个虚拟主机设置类似如下的信息即可:

    VirtualHostwww.company1.com;

    DocumentRoot/home/company1

    …

    /VirrualHost;

    优点:占用系统资源比上一种方式少。

    缺点:安全性低,每个虚拟主机仍然需要占用一个IP地址。

    三、ApacheWWW服务器下简单的基于名字的虚拟主机设置

    这种方式下,各个虚拟主机共享同一份Apache,因此有CGI程序运行时,安全性也不高。设置这种虚拟主机时,只要为每一个虚拟主机设置类似如下的信息即可

    NameVirtualHost111.222.33.44;在这个IP地址接收虚拟主机的服务

    VirtualHost111.222.33.44;

    ServerNamewww.company1.com

    DocumentRoot/www/company1

    /VirtualHost;

    VirtualHost111.222.33.44;

    ServerNamewww.company2.com

    DocumentRoot/www/company2

    /VirtualHost;

    优点:只要一个IP地址就可以提供大量的虚拟主机服务。

    缺点:安全性差。维护这些虚拟主机时需要更改配置文件,并且需要重新启动Apache进程才能起作用。因此不适合进行大规模的虚拟主机服务。

    四、ApacheWWW服务器下基于名字的大规模虚拟主机设置

    所谓大规模虚拟主机,是指能够提供非常多的虚拟主机服务,比如能提供超过数十万个域名的虚拟主机服务。如果使用以上讨论的方法,是很难完成的。实现这种服务的一种方式是利用Apache功能强大的URL重写功能。下面以一个实例来说明这种方式。

    1、Apache中URL重写功能

    Apache1.2及以后版本都有URL重写(Rewrite)功能。简单的说,URL重写功能就是在Apache接收到请求后,在处理的过程中能根据预先设定的规则,对请求中的URL进行修改。这些规则主要由正规表达式组成。重写依赖于输入的URL、各种服务器端环境变量、HTTP请求头中的内容、时间,甚至可以通过外部的程序来使用数据库中的信息来帮助重写。

    URL重写功能非常强大,通过URL重写,可以使Apache完成异常复杂的功能。当然,URL重写功能本身也比较复杂,关于URL重写功能的详细说明可以参看Apache的随机文档。

    WWW服务器虚拟主机是指使用一台物理机器,充当多个主机名的WWW服务器。使用WWW虚拟主机的好处在于,一些小规模的网站,通过跟其他网站共享同一台物理机器,可以减少系统的运行成本,并且可以减少管理的难度。另外,对于个人用户,也可以使用这种虚拟主机方式来建立有自己独立域名的WWW服务器。下面,我就给大家介绍一下如何在Apache下设置各种虚拟主机。
原创粉丝点击