httpd之虚拟主机和默认虚拟主机

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了httpd之虚拟主机和默认虚拟主机相关的知识,希望对你有一定的参考价值。

原理介绍
基于IP地址的虚拟主机
    不同的主机名解析到不同的IP地址,提供虚拟主机服务的机器上同时设置有这些IP地址。服务器根据用户请求的目的IP地址来判定用户请求的是哪个虚拟主机的服务,从而进一步的处理。
    缺点:既浪费了IP地址,又限制了一台机器所能容纳的虚拟主机数目。因此这种方式越来越少使用。但是,这种方式是早期使用的HTTP 1.0协议唯一支持的虚拟主机方式。
基于主机名的虚拟主机
    HTTP 1.1协议中增加了对基于主机名的虚拟主机的支持。具体说,当客户程序向WWW服务器发出请求时,客户想要访问的主机名也通过请求头中的“Host:”语句传递给WWW服务器。WWW服务器程序接收到这个请求后,可以通过检查“Host:”语句,来判定客户程序请求是哪个虚拟主机的服务,然后再进一步的处理。
  优点:提供虚拟主机服务的机器上只要设置一个IP地址,理论上就可以给无数多个虚拟域名提供服务,占用资源少,管理方便。目前基本上都是使用这种方式来提供虚拟主机服务。
  缺点:在早期的HTTP 1.0版本下不能使用。实际上现在使用的浏览器基本上都支持基于主机名的虚拟主机方式。

虚拟主机需要的元素
  1. <VirtualHost HOST>
  2. ServerName     #主机名
  3. ServerAlias    #主机名的别名
  4. DocumentRoot /www/test.com #虚拟主机的家目录
  5. # 对文件系统中路径的访问控制
  6. <Directory “/www/test.com”>
  7.     Options none
  8.     AllowOverride AuthConfig
  9.     AuthName "Private"
  10.     AuthType Basic
  11.     AuthUserFile /www/passwords/passwd.dbm
  12.     Require valid-user
  13. </Directory>

  14. # 对DocumentRoot中路径的访问控制
  15. <Location "/image"> #此处相当于对/www/test.com/image的访问控制
  16.     Order deny,allow
  17.     Deny from all
  18. </Location>
  19. Alias "/icon/" "/var/www/html/image/icon"
  20. ErrorLog
  21. CustomLog

  22. ScriptAlias
  23. </VirtualHost>

CGI:Common Gateway Interface,通用网管接口/协议,apache可以调用外部的解释器,解释器处理后会将结果返回给apache(服务器端动态)

虚拟主机的定义
    先注销中心主机。方法注释DocumentRoot即可
Host的写法
基于IP
基于端口
基于域名
IP1:80   IP2:80
IP:80   IP:8080
*:80或者IP:80ServerName不同
网卡别名:
ip addr add 192.168.8.61/24 dev eth0

测试各种虚拟主机
/usr/local/apache2/bin/httpd -S
实例
  1. <VirtualHost 192.168.8.60:80>
  2. #    ServerAdmin [email protected]
  3.     DocumentRoot /www/www.t.com
  4.     ServerName www.t.com
  5. #    ErrorLog logs/dummy-host.example.com-error_log
  6. #    CustomLog logs/dummy-host.example.com-access_log common
  7. </VirtualHost>

  8. <VirtualHost 192.168.8.60:80>
  9. #    ServerAdmin [email protected]
  10.     DocumentRoot /www/www.test.com
  11.     ServerName www.test.com
  12.     ErrorLog logs/test.com-error_log
  13.     CustomLog logs/test.com-access_log combined
  14.     <Directory "/www/www.test.com">
  15.         Options none
  16.         AllowOverride none
  17.         Order deny,allow
  18.         Deny from 192.168.8.104
  19.     </Directory>
  20. </VirtualHost>

  21. <VirtualHost 192.168.8.61:80>
  22. #    ServerAdmin [email protected]
  23.     DocumentRoot /www/www.hiyang.com
  24.     ServerName www.hiyang.com
  25. #    ErrorLog logs/dummy-host.example.com-error_log
  26. #    CustomLog logs/dummy-host.example.com-access_log common
  27. </VirtualHost>
  28. <VirtualHost 192.168.8.60:8080>
  29. #    ServerAdmin [email protected]
  30.     DocumentRoot /www/www.a.com
  31.     ServerName www.a.com
  32. #    ErrorLog logs/dummy-host.example.com-error_log
  33. #    CustomLog logs/dummy-host.example.com-access_log common
  34. </VirtualHost>
定义:index.html文件

默认虚拟主机(基于主机名)
    默认虚拟主机是在定义虚拟主机时的第一个虚拟主机。一般情况下,别人的主机名可以解析到本地的IP后对访问到默认的虚拟主机,为了避免出现恶意的解析,通常将默认虚拟主机禁用。
可以设置Apache对默认虚拟主机DocumentRoot没有访问权限,可以在文件系统级别设置,或者配置文件级别设置。
1)匹配所有不合法的访问
  1. <VirtualHost _default_:*>
  2.     DocumentRoot "/www/default"
  3. </VirtualHost>

  1. <VirtualHost IP:80>
  2.     DocumentRoot /www/www.a.com
  3.     ServerName www.a.com
  4. </VirtualHost> 
也可以,通过order实现
  1. <VirtualHost IP:80>
  2.     DocumentRoot /www/www.a.com
  3.     ServerName www.a.com
  4. <Directory “/www/www.a.com”>
  5.     Order deny,allow
  6.     Deny from all
  7. </Directory>
  8. </VirtualHost> 






本文出自 “hiyang” 博客,请务必保留此出处http://hiyang.blog.51cto.com/10728919/1786205

以上是关于httpd之虚拟主机和默认虚拟主机的主要内容,如果未能解决你的问题,请参考以下文章

配置httpd支持PHP和httpd的默认虚拟主机

web服务之httpd及其新特性

WEB应用之httpd基础入门

Linux之Web服务Httpd服务配置之四

LAMP环境搭配之配置apache虚拟主机

4.Apache和PHP结合 Apache默认虚拟主机