分享
分享赚钱 收藏 举报 版权申诉 / 8

类型配置apache虚拟主机.doc

  • 上传人:11xg27ws
  • 文档编号:7220047
  • 上传时间:2019-05-10
  • 格式:DOC
  • 页数:8
  • 大小:58.50KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    配置apache虚拟主机.doc
    资源描述:

    1、配置 apache 虚拟主机通过以下文章:实现:同一 ip 不同端口对应不同的站点目录具体实现:1.在 httpd.conf 中,设置 listen IP:80 listen IP:8080然后在 virtualhost 中设置:DocumnetRoot 1 DocumnetRoot 2 我们通常所说的虚拟主机url=javascript:;技术/url就是将一台(或者一组)服务器的资源(系统资源、网络带宽、存储空间等)按照一定的比例分割成若干台相对独立的“小主机”的技术。每一台这样的“小主机”在功能上都可以实现 WWW、FTP 、Mail 等基本的 Internet 服务,就像使用独立的主机

    2、一样。目前网站服务器的虚拟主机平台使用以开放的 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 地址的虚拟主机和基

    3、于主机名字的虚拟主机,下面我们分别介绍一下它们的实现方法以及优缺点。以便大家在具体的应用中能够选择最合适的实现方法。一、Apache 实现基于 IP 地址的虚拟主机( 每个站点拥有一个独立 IP 地址)使用这种虚拟主机方式,首先要在服务器上为每个虚拟主机单独设置一个 IP 地址。这些 IP 地址可以通过增加多个网卡或者在一个网卡上设立多个 IP 地址来完成。有了多个 IP地址后,可以采用以下两种方式之一来设置 Apache。 1、为每个虚拟主机运行一份 Apache 采用这种方式,每一份 Apache 程序可以以单独的用户运行,因此各个虚拟主机之间互不影响。设置这种虚拟主机时,只要为每一份 A

    4、pache 设置一套配置文件就可以了,唯一需要注意的是:必须使用“Listen”语句,强制每一份 Apache 仅仅在属于“自己”的 IP地址上接收服务请求。 优点:各个虚拟主机之间互不干扰,安全性高。 缺点:占用系统资源较多。 2、多个虚拟主机共享同一份 Apache 采用这种方式,各个虚拟主机共享同一份 Apache,因此各个虚拟主机之间有一定的影响,尤其是执行 CGI 程序时,可能会带来一些严重的安全问题。设置这种虚拟主机时,只要为每一个虚拟主机设置类似如下的信息即可:DocumentRoot /www/ghq1 优点:占用系统资源比上一种方式少。 缺点:安全性低,每个虚拟主机仍然需要占

    5、用一个 IP 地址。例如服务器一个网卡上绑定有两个 IP 地址(172.16.3.40 和 172.16.3.50)分别对应域名 和 www.ghq2.org 的服务,配置如下:服务器配置(apache 的配置文件 httpd.conf)Listen 80DocumentRoot /www/ghq1ServerName DocumentRoot /www/ghq2ServerName www.ghq2.org配置简单说明:“Listen”默认 httpd 服务会监控第 80 号通信端口, “Listen”选项让用户自行指定 apache 服务器监控的 IP 地址或通信端口。“Document

    6、Root”:指定 apache 服务器存放网页的根目录;“ServerName”:允许用户自行设置主机名,这个名称将被送到远程连接程序,以取代安装 apache 服务器主机的真实名称。和构成虚拟主机的语法结构,其中的 IP 就是我们在服务器上绑定的不同的 IP地址,也可以是 IP 地址加上通信端口号(见下面的例子) 。如果服务器有两个 IP 地址(172.16.3.40 和 172.16.3.50)分别对应域名 和 www.ghq2.org。对每个域名,我们都希望在 80 端口和 8080 端口发布我们的网站。可以这样配置:服务器配置(apache 的配置文件 httpd.conf)Liste

    7、n 172.16.3.40:80Listen 172.16.3.40:8080Listen 172.16.3.50:80Listen 172.16.3.50:8080DocumentRoot /www/ghq1-80ServerName DocumentRoot /www/ghq1-8080ServerName DocumentRoot /www/ghq2-80ServerName www.ghq1.orgDocumentRoot /www/ghq2-8080ServerName www.ghq2.org因此,建立虚拟主机,我们要做好不同的 IP 对应的域名解析url=javascript:;

    8、工作/url,建立相应的目录(如/www/ghq1 ) ,将相应的主页内容存放在相应的目录中即可。二、Apache 实现基于主机名的虚拟主机服务( 一个 IP 地址实现多个网站)基于主机名字的虚拟主机服务,是目前虚拟主机比较常用的一种方案。因为它不需要更多的 IP 地址,无须什么特殊的软硬件支持。而且现在的浏览器大都支持这种虚拟主机的实现方法。基于域名的的虚拟主机是根据客户端提交的 HTTP 头中的关于主机名的部分决定的。使用这种技术,很多虚拟主机可以享用同一个 IP 地址。基于域名的虚拟主机相对比较简单,因为我们只需要配置 DNS 服务器将每个主机名映射(CNAMES)到正确的 IP 地址,

    9、然后配置 Apache HTTP 服务器,令其辨识不同的主机名就可以了。基于域名的服务器也可以缓解 IP 地址(IPV4)不足的问题。这种方式下,各个虚拟主机共享同一份 Apache,因此有 CGI 程序运行时,安全性也不高。优点:只要一个 IP 地址就可以提供大量的虚拟主机服务。 缺点:安全性差。维护这些虚拟主机时需要更改配置文件,并且需要重新启动 Apache进程才能起作用。因此不适合进行大规模的虚拟主机服务。如果服务器只有一个 IP 地址,而在 DNS 中有很多映射到这个机器。我们想要在这个机器上运行 和 www.ghq2.org 两个站点。在 Apache 服务器的配置中创建一个虚拟

    10、主机并不会自动在 DNS 中对主机名做相应更新。我们必须自己在 DNS 中添加域名来指向我们的 IP 地址。否则别人是无法看到我们的 web 站点。服务器配置(apache 的配置文件 httpd.conf)# Ensure that Apache listens on port 80Listen 80# Listen for virtual host requests on all IP addressesNameVirtualHost *DocumentRoot /www/ghq1ServerName # Other directives hereDocumentRoot /www/ghq

    11、2ServerName www.ghq2.org# Other directives here因为*(星号)匹配所有的地址,所以主服务器不接收任何请求。因为 首先出现在配置文件中,所以它拥有最高优先级,可以认为是默认或首要服务器。这意味着如果一个接受的请求不能与某个 ServerName 指令相匹配, 它将会由第一个 VirtualHost 所伺服。当我们的 IP 地址无法确定的时候,使用*是很方便的-比如说, ISP 给我们配置的是动态 IP 地址(如 ADSL 拨号上网) ,而我们有使用了某种动态域名解析系统时。因为*匹配任何 IP 地址,所以在这样的情况下,不论 IP 地址如何变化,我

    12、们都不需要另外进行配置。上述配置就是我们在绝大多数情况下使用基于域名的虚拟主机时将要用到的。关于 DNS 和 Apache本文档的涵义一言以蔽之就是:不要让 Apache 在解析配置文件的时候用到 DNS。 如果Apache 在解析配置文件时用到了 DNS,您的服务器就会发生可靠性的问题(也可能根本无法启动), 或者遭致拒绝(偷窃)服务攻击( 包括用户可以从其他用户那里偷窃点击) 。一个简单示例 拒绝服务 “main server“地址 避免这些问题的小技巧 附录:进一步的提示 一个简单示例ServerAdmin webgirlabc.dom DocumentRoot /www/abc 为了让

    13、 Apache 功能正常,一个虚拟主机绝对需要以下两部分的信息: ServerName 和与服务器对应的至少一个 IP 地址。 这个示例没有包括 IP 地址,于是 Apache 必须用 DNS 来查询 www.abc.dom 的地址。 如果在某些不可预料的情况下,当您的服务器解析配置文件时没有得到 DNS 的支持, 那么这个虚拟主机 将不会被配置。 它将不会对任何请求作出反应。(在 Apache 的 1.2 版本之前,服务器甚至无法启动)。假设 www.abc.dom 的 IP 地址是 10.0.0.1。那么看看以下这个配置片断:ServerAdmin webgirlabc.dom Docum

    14、entRoot /www/abc 现在 Apache 需要 DNS 对这个虚拟主机进行反向域名解析来确定 ServerName。 如果反向解析失败,那么这将导致这个虚拟主机部分功能丧失。 (在 Apache 的 1.2 版本之前,服务器将不能启动)。如果虚拟主机是基于域名的, 它将完全不能使用,但如果它是基于 IP的,那么它将很有可能工作。 然而,如果 Apache 不得不为一个已经包含了服务器域名的服务器产生一个完整的 URL, 那么它将可能产生一个无效的 URL。以下是一个可以避免上述两个问题的配置片断.ServerName www.abc.dom ServerAdmin webgirla

    15、bc.dom DocumentRoot /www/abc 拒绝服务拒绝服务主要由(至少)两种形式导致。 如果您在运行 Apache 1.2 以前的版本,在上述两种情况下,如果您的任何一个虚拟主机的 DNS 解析失败,您都会无法启动服务。在一些情况下,DNS 解析甚至不在您的控制范围之内。 比如说,如果 abc.dom 是您的一个客户,而且他们自己控制着 DNS。 那么仅仅是因为他们删除了 www.abc.dom 这个记录, 都会导致您的服务器(1.2 之前的版本 )无法启动。另外一种形式就更隐蔽了。比如说下面这个配置片断:ServerAdmin webgirlabc.dom DocumentR

    16、oot /www/abc ServerAdmin webguydef.dom DocumentRoot /www/def 假设您已经为 www.abc.dom 设定了 10.0.0.1,而为 www.def.dom 设定了 10.0.0.2。 更进一步,假设 自己控制 DNS。在这种配置下, 您已经把 放到了一个可以将所有指向 的所有流量据为己有的情况之下。为了达到这样的目的,他们只需要把www.def.dom 的地址解析设置成 10.0.0.1 就可以了。因为他们控制着自己的 DNS 服务, 所以您无法阻止他们把 这个记录指向任何一个 IP 地址。然后,所有向 10.0.0.1 发出

    17、的请求 (包括用户所有类似 http: /www.abc.dom/任何字符的URL) 都将会为 这个虚拟主机所接收。 为了更好的理解着一切是怎样发生的, 您需要一个关于 Apache 是怎样将进入的请求分配给它的虚拟主机的深入说明。 您可以在这里发现一个完整的文档。“main server“地址在 Apache 1.1 中,基于域名的虚拟主机支持 需要 Apache 知道运行着 httpd 的主机的 IP 地址。 一般来说可以用全局变量 ServerName(如果存在) 或者调用 C 的方法 gethostname(与在命令行模式下键入 hostname 得到的返回值一样) 。 接着它就会利

    18、用 DNS 来查找这个地址。目前还没有办法避免这样的查找。如果您担心这样的查找会因为您的 DNS 服务器没有启动而遭到失败的结果, 您就可以在/etc/hosts 中插入一条记录来确定主机名 (此文件中应该已经存在这条记录了,否则您的机器无法正常启动)。 然后,您要确认您的机器已经配置为当 DNS 解析失败的情况下, 它将会使用/etc/hosts 根据所使用的操作系统不同, 您可能需要在/etc/resolv.conf 或/etc/nsswitch.conf 两个文件中选择一个进行编辑。如果您的服务器不必因为其他理由而使用 DNS, 您也许不必在把 HOSTRESORDER 环境变量设置为

    19、“local“的情况下运行 Apache。 这都取决于您所使用的操作系统和解析库。如果您没有使用 mod_env 来控制环境变量,它还将影响到 CGI。强烈建议您参考一下您所使用的操作系统附带的 man 帮助或 FAQ。避免这些问题的小技巧在 VirtualHost 中使用 IP 地址 在 Listen 中使用 IP 地址 确保所有的虚拟主机拥有显式的 ServerName 定义。 创建一个不包含任何服务页面的服务器 附录:进一步的提示涉及到 DNS 的情况都很让人不舒服。 在 Apache 1.2 中,我们努力想让服务器在 DNS 解析失败的情况下至少保持能够启动, 但可能我们还是没能做到最

    20、好。在当今重编号成了必须的 Internet 上面, 在配置文件中显式的写明 IP 地址已经成为不合时宜的行为了。上述盗窃攻击的解决办法是, 在一个正向的 DNS 查询结果后部署一个逆向 DNS 解析并将两个域名进行比较。 如果不同,就禁用相应的虚拟主机。 这个方法需要一个正确配置了的逆向域名解析服务器 (因为 FTP 服务器和 TCP 封装进行的 “双重逆向”DNS 处理的普遍应用,这已为大部分管理员所熟知了)。在某些情况下,如果没有使用 IP 地址而 DNS 解析又失败了,那么正常启动一个基于域名的虚拟主机看来是不可能的。 一些诸如禁用部分配置文件这样的权宜之计会带来比根本不能启动更遭的不

    21、可预测的结果。随着 HTTP/1.1 的部署以及浏览器和代理服务器开始支持 Host 头,我们完全避免使用基于IP 的虚拟主机也逐渐成为可能。 这种状况下,web 服务器也不必在配置时进行 DNS 的查询。 但在 1997 年 3 月,这些特性的采用还没有广泛到可以在重要的 web 服务器应用的地步。 IP 地址; 虚拟主机 IP 地址对应的完整域名; 字符*,仅与 NameVirtualHost *配合使用以匹配所有的 IP 地址;或是 字符串_default_,与基于 IP 的虚拟主机联用以捕获所有没有匹配的 IP 地址。 示例ServerAdmin DocumentRoot /www/d

    22、ocs/ServerName ErrorLog logs/-error_logTransferLog logs/-access_logIPv6 的地址必须放入方括号中指定,否则作为可选项的端口号将无法确定。一个 IPv6 的示例如下:ServerAdmin DocumentRoot /www/docs/ServerName ErrorLog logs/-error_logTransferLog logs/-access_log每个虚拟主机必须对应不同的 IP 地址、端口号或是不同的主机名。在第一种情况下,服务器所在物理机器必须配置为可以为多个地址接受 IP 包。 (在机器没有多个网络硬件界面的

    23、情况下,如果您的操作系统支持,您可以使用 ifconfig alias 命令来达到这个目的。 ) 。当使用基于 IP 的虚拟主机时,特殊的名称_default_可以在没有匹配上其它列出的虚拟主机的情况下作为匹配任何 IP 地址的虚拟主机。在没有进行 _default_虚拟主机的设定时,在没有 IP 与请求匹配的情况下,将使用“主服务器” (包括所有在虚拟主机配置段之外的配置)的配置。 (但请注意:任何匹配 NameVirtualHost 指令的 IP 地址既不会使用“main“服务器配置,也不会使用_default_ 虚拟主机的配置。参阅基于域名的虚拟主机文档获得更多详情。 )您可以指定一个:

    24、端口来改变匹配的端口。如果没有指定,它将沿用主服务器中离它最近的那个 Listen 语句指定的值。您也可以指定:*来匹配那个地址上的所有端口。 (当您使用_default_时,这是推荐采用的方法。 )安全提示:参阅安全提示文档获得为什么当您存储url=javascript:;日志/url文件的目录对于启动服务器以外的用户来说是可写的会危及服务器安全的详细资料。注意:的使用不会影响到 Apache 侦听的地址。您也许需要使用 Listen 来确保 Apache 侦听着正确的地址。 本文有经典论坛 剑气凌人 收集整理为调试程序,本机安装 iis 与 apache,无法同时使用 80 端口,现给出解

    25、决方法:方法一:IIS5,多 IP 下共存,IIS 为 192.168.0.1,apache 为 192.168.0.2 原文地址c:InetpubAdminscrptscscrpt adsutil.vbs set w3svc/disablesocketpooling true该命令反馈如下 disablesocketpooling : (BOOLEAN) True重启 IISInetpubAdminscrptscscrpt adsutil.vbs set w3svc/disablesocketpooling true由于 DisableSocketPooling 在 IIS 6.0 元url

    26、=javascript:;数据库/url架构 (MBSchema.xml) 中被定义为有效属性,所以,您仍然可以使用 Adsutil.vbs 设置该属性,但这种设置不起作用。IIS 6.0 中的功能是新增的核心级别驱动程序 HTTP.sys 的一部分。要配置 HTTP.sys,您必须使用 Httpcfg.exe方法二:IIS6,多 IP 下共存,IIS 为 192.168.0.1,apache 为 192.168.0.2 原文地址到 2003 的 CD 下的 support/tools/Support.cab。解压出 httpcfg.exe 文件,COPY 到windows/system32/

    27、目录下,用法自己看帮助命令行绑定到某 IP: httpcfg set iplisten -i 192.168.0.1即命令使用 IIS 的只监听指定的 IP 及端口查看绑定: httpcfg query iplisten 删除绑定: httpcfg delete iplisten -i 192.168.0.1命令行net stop Apache2net stop iisadmin /ynet START Apache2net START w3svc保证 iis 下的 ip 设置为全局默认,Apache 中 httpconf 设置 listen 192.168.0.2:80,就应该可以两个服务同

    28、时运行,相互不冲突了。IIS 的访问地址为 http:/192.168.0.1,Apache 访问地址为 http:/192.168.0.2方法三:网上常用的单 IP 共用 80 端口方法,不过不推荐,只是使用 Apache 的代理,速度有影响将apache 设为使用 80 端口,IIS 使用其它端口,比如 81,然后将 apache 作为 IIS 的代理。在 httpd.conf 里面,取消下面四行的注释:LoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_

    29、connect.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_ftp_module modules/mod_proxy_ftp.so然后建立一个虚拟主机,将该域名的所有访问转向 81 端口。ServerName ProxyPass / localhostProxyPassReverse / localhost这样,对外就可以只需要一个端口,即可同时使用 apache 和 IIS 的功能了 类推,使用第二种方法,你可以在 IIS 上配置 PHP4,Apache2 中配置 PHP5,只需要 IIS

    30、中安装 PHP4,把url=javascript:;php/url.ini 复制到windows 目录即可,这个就不用说了吧,Apache2 中,只要把 PHP5 的 php.ini放在 PHP5 安装目录里面就行了配置 Apache 以支持 PHP5:LoadModule php5_module “D:/PHPServer/PHP5/php5apache2.dll“AddType application/x-httpd-php .phpDirectoryIndex index.html index.phpPHPIniDir “D:/PHPServer/PHP5“其中最重要的一条就是 PHPIniDir,用来指明 php.ini 文件所在位置,即 PHP5 的安装目录,注意所有目录的应该改为 D: /PHPServer/PHP5 这种格式,而非 D:PHPServerPHP5,IIS 的访问地址为 http:/192.168.0.1, Apache 访问地址为 http:/192.168.0.2

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:配置apache虚拟主机.doc
    链接地址:https://www.docduoduo.com/p-7220047.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开