还剩6页未读,继续阅读
文本内容:
配置虚拟主机apache通过以下文章实现同一不同端口对应不同的站点目录具体实现ip
1.在httpd.conf中,设置listen IP:80listen IP:8080然后在中设置virtualhostDocumnetRoot1DocumnetRoot2我们通常所说的虚拟主机[技术[url=j avascript:[/url]就是将一台或者一组服务器的资源系统资源、网络带宽、存储空间等按照一定的比例分割成若干台相对独立的“小主机”的技术每一台这样的“小主机”在功能上都可以实现、WWW、等基本的服务,就像使用独立的主机一样FTP MailInternet目前网站服务器的虚拟主机平台使用以开放的为最多,其次是微软的Apache WindowsIISoApache具有跨平台FreeBSD/Linux/Windows/Solaris/Other UNIX、易于维护与最佳安全性等优点是率先支持基于虚拟主机的服务器之一及其更新版本同时支持基于Apache IPApache
1.1和基于主机名的虚拟主机,不同的虚拟主机有时会被称为基于主机或非虚拟主IP host-based IP机non-IP virtual hostso用设置虚拟主机服务通常可以采用两种方案基于地址的虚拟主机和基于主机Apache IP名字的虚拟主机,下面我们分别介绍一下它们的实现方法以及优缺点以便大家在具体的应用中能够选择最合适的实现方法
一、实现基于地址的虚拟主机每个站点拥有一个独立地址Apache IP IP使用这种虚拟主机方式,首先要在服务器上为每个虚拟主机单独设置一个地址这些IP IP地址可以通过增加多个网卡或者在一个网卡上设立多个地址来完成有了多个地址后,可IP IP以采用以下两种方式之一来设置Apache、为每个虚拟主机运行一份1Apache采用这种方式,每一份程序可以以单独的用户运行,因此各个虚拟主机之间互不Apache影响设置这种虚拟主机时,只要为每一份设置一套配置文件就可以了,唯一需要注意Apache的是必须使用语句,强制每一份仅仅在属于“自己”的地址上接收服务请“Listen”Apache IP求优点各个虚拟主机之间互不干扰,安全性高缺点占用系统资源较多、多个虚拟主机共享同一份2Apache采用这种方式,各个虚拟主机共享同一份因此各个虚拟主机之间有一定的影响,尤Apache,其是执行程序时,可能会带来一些严重的安全问题设置这种虚拟主机时,只要为每一个CGI虚拟主机设置类似如下的信息即可DocumentRoot/www/ghql优点占用系统资源比上一种方式少缺点安全性低,每个虚拟主机仍然需要占用一个地址IP例如服务器一个网卡上绑定有两个IP地址(
172.
16.
3.40和
172.
16.
3.50)分别对应域名和的服务,配置如下www.ghql.com www.ghq
2.org服务器配置(apache的配置文件httpd.conf)Listen80DocumentRoot/www/ghqlServerName www.ghql.comDocumentRoot/www/ghq2ServerName www.ghq
2.org配置简单说明默认服务会监控第号通信端口,选项让“Listen”httpd80“Listen”用户自行指定服务器监控的地址或通信端口apache IP“DocumentRoot”指定叩ache服务器存放网页的根目录;“ServerName”允许用户自行设置主机名,这个名称将被送到远程连接程序,以取代安装叩服务器主机的真实名称和构ache成虚拟主机的语法结构,其中的就是我们在服务器上绑定的不同的地址,也可以是地IP IP IP址加上通信端口号(见下面的例子)如果服务器有两个IP地址(
172.
16.
3.40和
172.
16.
3.50)分别对应域名www.ghql.com和对每个域名,我们都希望在端口和端口发布我们的网站可以这样配置www.ghq
2.orgo808080服务器配置(apache的配置文件httpd.conf)Listen
172.
16.
3.40:80Listen
172.
16.
3.40:8080Listen
172.
16.
3.50:80Listen
172.
16.
3.50:8080DocumentRoot/www/ghql-80ServerName www.ghql.comDocumentRoot/www/ghql-8080ServerName www.ghql.comDocumentRoot/www/ghq2-80ServerName www.ghql.orgDocumentRoot/www/ghq2-8080ServerName www.ghq
2.org因此,建立虚拟主机,我们要做好不同的对应的域名解析IP作[url=javascript:;]T[/url],建立相应的目录(如/www/ghql),将相应的主页内容存放在相应的目录中即可
二、实现基于主机名的虚拟主机服务(一个地址实现多个网站)Apache IP基于主机名字的虚拟主机服务,是目前虚拟主机比较常用的一种方案因为它不需要更多的地址,无须什么特殊的软硬件支持而且现在的浏览器大都支持这种虚拟主机的实现方IP法基于域名的的虚拟主机是根据客户端提交的头中的关于主机名的部分决定的使用HTTP这种技术,很多虚拟主机可以享用同一个地址IP基于域名的虚拟主机相对比较简单,因为我们只需要配置服务器将每个主机名映射DNS(CNAMES)到正确的IP地址,然后配置Apache HTTP服务器,令其辨识不同的主机名就可以了基于域名的服务器也可以缓解IP地址(IPV4)不足的问题这种方式下,各个虚拟主机共享同一份因此有程序运行时,安全性也不高Apache,CGI优点只要一个地址就可以提供大量的虚拟主机服务IP缺点安全性差维护这些虚拟主机时需耍更改配置文件,并且需要重新启动进程Apache才能起作用因此不适合进行大规模的虚拟主机服务如果服务器只有一个地址,而在中有很多映射到这个机器我们想要在这个机器IP DNS上运行和两个站点在服务器的配置中创建一个虚拟主机并www.ghql.com www.ghq
2.org Apache不会自动在中对主机名做相应更新我们必须自己在中添加域名来指向我们的地DNS DNSIP址否则别人是无法看到我们的站点web服务器配置(apache的配置文件httpd.conf)#Ensure thatApache listenson port80Listen80#Listen forvirtualhostrequests onall IPaddressesNameVirtualHost*DocumentRoot/w ww/ghq1ServerName www.ghql.com#Other directiveshereDocumentRoot/www/ghq2ServerName www.ghq
2.org#Other directiveshere因为*(星号)匹配所有的地址,所以主服务器不接收任何请求因为首先www.ghql.com出现在配置文件中,所以它拥有最高优先级,可以认为是默认或首要服务器这意味着如果一个接受的请求不能与某个指令相匹配,它将会由第一个所伺服ServerName VirtualHost当我们的地址无法确定的时候,使用*是很方便的-比如说,给我们配置的是动态IP ISPIP地址(如拨号上网),而我们有使用了某种动态域名解析系统时因为*匹配任何地ADSL IP址,所以在这样的情况下,不论地址如何变化,我们都不需要另外进行配置上述配置就是IP我们在绝大多数情况下使用基于域名的虚拟主机时将要用到的关于和DNS Apache本文档的涵义一言以蔽之就是不要让在解析配置文件的时候用到如果在Apache DNSoApache解析配置文件时用到了您的服务器就会发生可靠性的问题(也可能根本无法启动),或DNS,者遭致拒绝(偷窃)服务攻击(包括用户可以从其他用户那里偷窃点击)一个简单示例拒绝服务地址main server”避免这些问题的小技巧附录进一步的提示一个简单示例ServerAdmin webgirl@abc.domDocumentRoot/www/abc为了让功能正常,一个虚拟主机绝对需要以下两部分的信息和与服务器对Apache ServerName应的至少一个地址这个示例没有包括地址,于是必须用来查询IPIPApache DNS www.abc.dom的地址如果在某些不可预料的情况下,当您的服务器解析配置文件时没有得到的支持,DNS那么这个虚拟主机将不会被配置它将不会对任何请求作出反应(在的版本之前,Apache L2服务器甚至无法启动)假设的地址是」那么看看以下这个配置片断www.abc.dom IP1000ServerAdmin webgirl@abc.domDocumentRoot/www/abc现在需要对这个虚拟主机进行反向域名解析来确定如果反向解析失败,Apache DNSServerNameo那么这将导致这个虚拟主机部分功能丧失(在的版本之前,服务器将不能启动)Apache
1.2如果虚拟主机是基于域名的,它将完全不能使用,但如果它是基于的,那么它将很有可能工IP作然而,如果不得不为一个已经包含了服务器域名的服务Apache器产生一个完整的那么它将可能产生一个无效的以下是一个可以避免上述两个问题URL,URLo的配置片断.ServerName www.abc.domServerAdmin webgirl@abc.dom DocumentRoot/www/abc拒绝服务拒绝服务主要由(至少)两种形式导致如果您在运行以前的版本,在上述两种情况Apache L2下,如果您的任何一个虚拟主机的解析失败,您都会无法启动服务在一些情况下,DNS DNS解析甚至不在您的控制范围之内比如说,如果是您的一个客户,而且他们自己控制abc.dom着DNSo那么仅仅是因为他们删除了www.abc.dom这个记录,都会导致您的服务器(L2之前的版本)无法启动另外一种形式就更隐蔽了比如说下面这个配置片断ServerAdmin webgirl@abc.domDocumentRoot/www/abcServerAdmin webguy@def.domDocumentRoot/www/def假设您已经为设定了而为设定了更进一步,假设www.abc.dom
10.
0.
0.1,www.def.dom
10.
0.
0.2自己控制在这种配置下,您已经把放到了一个可以将所有指向的def.com DNSodef.com abc.com所有流量据为己有的情况之下为了达到这样的目的,他们只需要把的地址解析设www.def.dom置成就可以了因为他们控制着自己的服务,所以您无法阻止他们把
10.
0.
0.1DNSwww.def.com这个记录指向任何一个地址IP然后,所有向
10.
0.
0.1发出的请求(包括用户所有类似http://www.abc.dom/任何字符的URL)都将会为这个虚拟主机所接收为了更好的理解着一切是怎样发生的,您需要一个关于def.com Apache是怎样将进入的请求分配给它的虚拟主机的深入说明您可以在这里发现一个完整的文档地址main server”在中,基于域名的虚拟主机支持需要知道运行着的主机的地址一Apache
1.1Apache httpdIP般来说可以用全局变量(如果存在)或者调用的方法(与在命令行模ServerName Cgethostname式下键入得到的返回值一样)接着它就会利用来查找这个地址目前还没有办hostname DNS法避免这样的查找如果您担心这样的查找会因为您的服务器没有启动而遭到失败的结果,您就可以在DNS/etc/hosts中插入一条记录来确定主机名(此文件中应该已经存在这条记录了,否则您的机器无法正常启动)然后,您要确认您的机器已经配置为当解析失败的情况下,它将会使用根DNS/etc/hosts据所使用的操作系统不同,您可能需要在或两个文件中选择一个进/etc/resolv.conf/etc/nsswitch.conf行编辑如果您的服务器不必因为其他理由而使用您也许不必在把环境变量设置DNS,HOSTRESORDER为的情况下运行这都取决于您所使用的操作系统和解析库如果您没有使用local”Apacheo来控制环境变量,它还将影响到强烈建议您参考一下您所使用的操作系统附带的mod_env CGL帮助或man FAQ避免这些问题的小技巧在中使用地址VirtualHost IP在中使用地址Listen IP确保所有的虚拟主机拥有显式的定义ServerName创建一个不包含任何服务页面的服务器附录进一步的提示涉及到的情况都很让人不舒服在中,我们努力想让服务器在解析失败的DNS Apache
1.2DNS情况下至少保持能够启动,但可能我们还是没能做到最好在当今重编号成了必须的Internet上面,在配置文件中显式的写明地址已经成为不合时宜的行为了IP上述盗窃攻击的解决办法是,在一个正向的查询结果后部署一个逆向解析并将两个DNS DNS域名进行比较如果不同,就禁用相应的虚拟主机这个方法需要一个正确配置了的逆向域名解析服务器(因为服务器和封装进行的“双重逆向处理的普遍应用,这已为大FTP TCPDNS部分管理员所熟知了)在某些情况下,如果没有使用地址而解析又失败了,那么正常启动一个基于域名的虚IP DNS拟主机看来是不可能的一些诸如禁用部分配置文件这样的权宜之计会带来比根本不能启动更遭的不可预测的结果随着的部署以及浏览器和代理服务器开始支持头,我们完全避免使用基于的虚HTTP/
1.1Host IP拟主机也逐渐成为可能这种状况下,服务器也不必在配置时进行的查询但在web DNS1997年月,这些特性的采用还没有广泛到可以在重要的服务器应用的地步3webwww.uplinux.com/download/doc/apache/ApacheManual/dns-caveats.htmlwww.uplinux.com/download/doc/apache/ApacheManual/mod/core.html和用于封装一组仅施用于特定虚拟主机的指令任何在虚拟主机配置中可以使用的指令也同样可以在这里使用当服务器接受了一个特定虚拟主机的文档请求时,它会使用封装在配置段中的指令地址可以是虚拟主机的地址;IP虚拟主机地址对应的完整域名;IP字符*,仅与*配合使用以匹配所有的地址;或是NameVirtualHost IP字符串与基于的虚拟主机联用以捕获所有没有匹配的地址_default_,IPIP示例ServerAdmin webmaster@host.foo.comDocumentRoot/www/docs/host.foo.comServerName host.foo.comErrorLog logs/host.foo.com-error_logTransferLog logs/host.foo.com-access_log的地址必须放入方括号中指定,否则作为可选项的端口号将无法确定一个的示例如IPv6IPv6下ServerAdmin webmaster@host.foo.comDocumentRoot/www/docs/host.foo.comServerName host.foo.comErrorLog logs/host.foo.com-error_logTransferLog logs/host.foo.com-access_log每个虚拟主机必须对应不同的地址、端口号或是不同的主机名在第一种情况下,服务器所IP在物理机器必须配置为可以为多个地址接受包(在机器没有多个网络硬件界面的情况下,IP如果您的操作系统支持,您可以使用命令来达到这个目的)ifconfigalias当使用基于的虚拟主机时,特殊的名称可以在没有匹配上其它列出的虚拟主机的情IP_default_况下作为匹配任何地址的虚拟主机在没有进行忆虚拟主机的设定时,在没有与请IP_defau IP求匹配的情况下,将使用“主服务器”(包括所有在虚拟主机配置段之外的配置)的配置(但请注意任何匹配指令的地址既不会使用“服务器配置,也不会使用NameVirtualHost IPmain”忆虚拟主机的配置参阅基于域名的虚拟主机文档获得更多详情)您可以指定一个_defau端口来改变匹配的端口如果没有指定,它将沿用主服务器中离它最近的那个语句指定Listen的值您也可以指定*来匹配那个地址上的所有端口(当您使用』寸,这是推荐采—default用的方法)安全提示参阅安全提示文档获得为什么当您存储日志[url=javascript:;][/url]文件的目录对于启动服务器以外的用户来说是可写的会危及服务器安全的详细资料注意的使用不会影响到侦听的地址您也许需要使用来确保侦听着正确Apache ListenApache的地址本文有经典论坛剑气凌人收集整理为调试程序,本机安装与无法同时使用端口,现给出解决方法iis apache,80方法一多下共存,为为原文地址IIS5,IP IIS
192.16801,apache
192.16802c:\Inetpub\AdminscrTptscscnpt adsutil.vbs setw3svc/disablesocketpooling true该命令反馈如下disablesocketpooling:BOOLEAN True重启IISInetpub\AdminscnptscscrTpt adsutil.vbs setw3svc/disablesocketpooling true由于在元DisableSocketPooling IIS
6.0数据库[url=javascript:;][/url]架构中被定义为有效属性,所以,您仍然可以使用设置该属性,但这MBSchema.xml Adsutil.vbs种设置不起作用中的功能是新增的核心级别驱动程序的一部分要配置IIS
6.0HTTP.sys HTTP.sys,您必须使用Httpcfg.exe方法二多下共存,为为原文地址US6,IP IIS
192.
168.
0.1,apache
192.
168.
0.2到的下的解压出文件,到/2003CD support/tools/Supportcab httpcfg.exe COPYwindows/system32目录下,用法自己看帮助命令行绑定到某IPhttpcfg setiplisten-i
192.
168.
0.1即命令使用的只监听指定的及端口IIS IP查看绑定httpcfg queryiplisten删除绑定httpcfg deleteiplisten-i
192.
168.
0.1命令行net stopApache2net stopiisadmin/ynet STARTApache2net STARTw3svc保证下的设置为全局默认,中设置就应该可以两个服务iis ipApache httpconflisten
192.
168.
0.2:80,同时运行,相互不冲突了的访问地址为访问地址为IIS http://
192.16801,Apache http://
192.
168.S2方法三网上常用的单共用端口方法,不过不推荐,只是使用的代理,速度有影响将IP80Apache apache设为使用端口,使用其它端口,比如然后将作为的代理80IIS81,apache HS在里面,取消下面四行的注释httpd.confLoadModule proxy_module modules/mod_proxy.soLoadModule proxy_connect_module modules/mod_proxy_connect.soLoadModule proxy_http_module modules/mod_proxy_http.soLoadModule proxy_ftp_modulc modulcs/mod_proxy_ftp.so然后建立一个虚拟主机,将该域名的所有访问转向端口81ServerName iloves.vicp.netProxyPass/localhostProxyPassReverse/localhost这样,对外就可以只需要一个端口,即可同时使用叩和的功能了ache IIS类推,使用第二种方法,你可以在上配置中配置只需要中安装HS PHP4,Apache2PHP5,HS PHP4,把[url=javascript:;]php[/url]复制到目录即可,这个就不用说了吧,中,只要把的放在.ini windowsApache2PHP5php.ini PHP5安装目录里面就行了配置Apache以支持PHP5LoadModule php5_module nD:/PHPServer/PHP5/php5apache
2.dirAddType application/x-httpd-php.phpDirectoryindex index.html index.phpPHPIniDir HD:/PHPServer/PHP5n其中最重要的一条就是用来指明文件所在位置,即的安装目录,注意所PHPIniDir,php.ini PHP5有目录的应该改为这种格式,而非的访问地址为D:/PHPServei7PHp5D:\PHPServer\PHP5,IIS访问地址为http://
192.
168.
0.1,Apache http://l
92.
168.
0.2。
个人认证
优秀文档
获得点赞 0