Apache 虚拟主机设置详解

我们通常所说的虚拟主机技术就是将一台(或者一组)服务器的资源(系统资源、网络带宽、存储空间等)按照一定的比例分割成若干台相对独立的“小主机”的技术。每一台这样的“小主机”在功能上都可以实现WWW、FTP、Mail等基本的Internet服务,就像使用独立的主机一样。
   
  
    目前网站服务器的虚拟主机平台使用以开放的Apache为最多,其次是微软的Windows IIS。Apache具有跨平台(FreeBSD/Linux/Windows/Solaris/Other UNIX)、易于维护与最佳安全性等优点。

Apache是率先支持基于IP虚拟主机的服务器之一。 Apache 1.1及其更新版本同时支持基于IP和基于主机名的虚拟主机,不同的虚拟主机有时会被称为基于主机(host-based) 或非IP虚拟主机(non-IP virtual hosts)。

用Apache设置虚拟主机服务通常可以采用两种方案:基于IP地址的虚拟主机和基于主机名字的虚拟主机,下面我们分别介绍一下它们的实现方法以及优缺点。以便大家在具体的应用中能够选择最合适的实现方法。

一、Apache实现基于IP地址的虚拟主机(每个站点拥有一个独立IP地址)

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

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

优点:各个虚拟主机之间互不干扰,安全性高。
    缺点:占用系统资源较多。

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

优点:占用系统资源比上一种方式少。
    缺点:安全性低,每个虚拟主机仍然需要占用一个IP地址。

例如服务器一个网卡上绑定有两个IP地址(172.16.3.40和 172.16.3.50)分别对应域名 www.ghq1.com和www.ghq2.org的服务,配置如下:

服务器配置(apache的配置文件httpd.conf)
    Listen 80

<VirtualHost 172.16.3.40>
    DocumentRoot /www/ghq1
    ServerName www.ghq1.com
    </VirtualHost>

<VirtualHost 172.16.3.50>
    DocumentRoot /www/ghq2
    ServerName www.ghq2.org
    </VirtualHost>

配置简单说明:“Listen”默认httpd服务会监控第80号通信端口, “Listen”选项让用户自行指定apache 服务器监控的IP地址或通信端口。

“DocumentRoot”:指定apache 服务器存放网页的根目录;“ServerName”:允许用户自行设置主机名,这个名称将被送到远程连接程序,以取代安装apache 服务器主机的真实名称。<VirtualHost IP >和</VirtualHost>构成虚拟主机的语法结构,其中的IP就是我们在服务器上绑定的不同的IP地址,也可以是IP地址加上通信端口号(见下面的例子)。

如果服务器有两个IP地址(172.16.3.40和 172.16.3.50)分别对应域名 www.ghq1.com和www.ghq2.org。对每个域名,我们都希望在80端口和8080端口发布我们的网站。可以这样配置:

服务器配置(apache的配置文件httpd.conf)
    Listen 172.16.3.40:80
    Listen 172.16.3.40:8080
    Listen 172.16.3.50:80
    Listen 172.16.3.50:8080

<VirtualHost 172.16.3.40:80>
    DocumentRoot /www/ghq1-80
    ServerName www.ghq1.com
    </VirtualHost>

<VirtualHost 172.16.3.40:8080>
    DocumentRoot /www/ghq1-8080
    ServerName www.ghq1.com
    </VirtualHost>

<VirtualHost 172.16.3.50:80>
    DocumentRoot /www/ghq2-80
    ServerName www.ghq1.org
    </VirtualHost>

<VirtualHost 172.16.3.50:8080>
    DocumentRoot /www/ghq2-8080
    ServerName www.ghq2.org
    </VirtualHost>

因此,建立虚拟主机,我们要做好不同的IP对应的域名解析工作,建立相应的目录(如/www/ghq1),将相应的主页内容存放在相应的目录中即可。

二、Apache实现基于主机名的虚拟主机服务(一个IP地址实现多个网站)
   
    基于主机名字的虚拟主机服务,是目前虚拟主机比较常用的一种方案。因为它不需要更多的IP地址,无须什么特殊的软硬件支持。而且现在的浏览器大都支持这种虚拟主机的实现方法。基于域名的的虚拟主机是根据客户端提交的HTTP头中的关于主机名的部分决定的。使用这种技术,很多虚拟主机可以享用同一个IP地址。

基于域名的虚拟主机相对比较简单,因为我们只需要配置DNS服务器将每个主机名映射(CNAMES)到正确的IP地址,然后配置Apache HTTP服务器,令其辨识不同的主机名就可以了。基于域名的服务器也可以缓解IP地址(IPV4)不足的问题。这种方式下,各个虚拟主机共享同一份Apache,因此有CGI程序运行时,安全性也不高。

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

如果服务器只有一个IP地址,而在DNS中有很多映射到这个机器。我们想要在这个机器上运行www.ghq1.com和 www.ghq2.org两个站点。在Apache服务器的配置中创建一个虚拟主机并不会自动在DNS中对主机名做相应更新。我们必须自己在DNS中添加域名来指向我们的IP地址。否则别人是无法看到我们的web 站点。

服务器配置(apache的配置文件httpd.conf)
    # Ensure that Apache listens on port 80
    Listen 80

# Listen for virtual host requests on all IP addresses
    NameVirtualHost *

<VirtualHost *>
    DocumentRoot /www/ghq1
    ServerName www.ghq1.com

# Other directives here

</VirtualHost>

<VirtualHost *>
    DocumentRoot /www/ghq2
    ServerName www.ghq2.org

# Other directives here

</VirtualHost>

因为*(星号)匹配所有的地址,所以主服务器不接收任何请求。因为 www.ghq1.com首先出现在配置文件中,所以它拥有最高优先级,可以认为是默认或首要服务器。这意味着如果一个接受的请求不能与某个ServerName指令相匹配, 它将会由第一个VirtualHost所伺服。

当我们的IP地址无法确定的时候,使用*是很方便的--比如说, ISP给我们配置的是动态IP地址(如ADSL拨号上网),而我们有使用了某种动态域名解析系统时。因为*匹配任何IP 地址,所以在这样的情况下,不论IP地址如何变化,我们都不需要另外进行配置。上述配置就是我们在绝大多数情况下使用基于域名的虚拟主机时将要用到的。

本文转自:http://phpor.net/blog/read.php?78

Apache 虚拟主机设置详解相关推荐

  1. Apache虚拟主机配置详解

    Apache虚拟主机配置详解 1.配置环境说明 系统环境:CentOS7 Apache环境:编译安装的httpd-2.4.7 系统限制:关闭了防火墙和selinux hosts文件中配置以下域名解析 ...

  2. Linux中级实战专题篇一:nginx服务(特性优势,yum安装,编译安装详解,虚拟主机技术详解)

    一.HTTP 介绍 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器 ...

  3. Nginx 服务 (编译安装--访问控制--虚拟主机)详解

    文章目录 一.Nginx 服务基础 1.1.Nginx 概述 1.2.Nginx 的编译安装 1.2.1.编译安装步骤 1.2.2.使用systemctl控制 1.2.3.开启nginx,关闭防火墙 ...

  4. wampserver配置虚拟主机(详解)

    在Apache中包含虚拟主机配置文件 打开位于中的Apache配置文件 J:\wamp64\bin\apache\apache2.4.46\conf 搜索" LoadModule vhost ...

  5. Ubuntu 16.04与Apache虚拟主机配置的步骤详解

    这篇文章主要给大家介绍了关于Ubuntu 16.04与Apache虚拟主机配置的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ubuntu16.04系统具有一定的参考学习价值,需要的朋友 ...

  6. 如何在Ubuntu 18.04上设置Apache虚拟主机

    The Apache HTTP Web server is a powerful, free and open source web server that has been, and remains ...

  7. 虚拟主机的服务器配置在哪,配置Apache服务器下的虚拟主机设置有什么要求?景安...

    什么是apache虚拟主机?apache虚拟主机就是在apache服务器上配置多个虚拟主机,从而把一个服务器提供多站点的服务实现.用通俗的话来说就是对同一个服务器上的不同目录进行访问.那么如何在Apa ...

  8. 王者荣耀虚拟服务器设置方法,《王者荣耀》操作设置详解

    <王者荣耀>操作设置详解 大神团-小风|发布于10/26 近期手游平台有一款名为<王者荣耀>,其优质的MOBA体验让无数玩家爱不释手,而其中的操作模式更值得玩家去深究.究竟这款 ...

  9. linux虚拟主机泛解析,Apache虚拟主机的配置和泛域名解析实现代码

    Apache虚拟主机的配置和泛域名解析实现代码 更新时间:2012年03月11日 00:28:19   作者: Apache虚拟主机的配置和泛域名解析实现代码,需要的朋友可以参考下 虚拟主机的配置 基 ...

最新文章

  1. Linux那些事儿之我是Sysfs(8)一起散散步-pathwalk
  2. java a3 套打印_Java - apache PDFBox兩個A3論文到一個A2?
  3. 台式电脑怎么连接手机热点_电脑搜不到手机热点 为什么搜不到手机热点
  4. Linux基础-1.0共享文件夹创建
  5. 0自动转型到DBNull.Value引发的错误
  6. XGBoost的GPU用法
  7. 阿帕奇跨域_阿帕奇光束
  8. 记一些印象深刻的 Bug
  9. android studio 1.2.1.1导入library project(以sharesdk为例)
  10. vue项目跨域问题完全解决
  11. 有一定的php基础,求推荐PHP框架,本人有一定PHP基础。
  12. 台安PLC通过手机热点远程在线模拟,远程编程,远程调试
  13. 智鼎在线测评是测什么_(详解)人才测评工具和人才测评方法
  14. 【FPGA】Verilog实现奇偶分频
  15. ASP.NET 2.0收集
  16. 【English】百词斩阅读记事
  17. 计算机原理随堂练答案,计算机原理随堂练习(第二章)
  18. 爬楼梯,假设你正在爬楼梯,需要 n 步你才能到达顶部。但每次你只能爬一步或者两步,你能有多少种不同的方法爬到楼顶?
  19. Hierarchical Russian Roulette for Vertex Connections论文研读
  20. thinkcmf调用子类

热门文章

  1. 电路基础学习笔记6:实验验证戴维南定理
  2. Introduce·传播学重点核心期刊推荐之《中国编辑》
  3. mongo模糊查询时字段转义
  4. soundtouch android,soundtouch
  5. centos 7 在线安装nginx 查看gcc,pcre,zlib,openssl 等依赖是否安装
  6. 进程和现成相关知识积累查找
  7. android编译v8引擎,V8引擎 Android库构建
  8. 微信OA开发过程-原创首发
  9. android+5+镜像,msm8909+android5.1分区及烧录的镜像文件介绍
  10. NYOJ 懒省事的小明