为什么要使用虚拟主机呢?
我们应该知道,要想访问一个web站点,前提是在一个操作系统上,即物理主机。其次,就是需要主机、IP、和服务器。由于这样维持一个站点非常浪费,因此,我们就会期望在一台物理主机上能够虚拟出多个同时运行的站点(或主机),这样就引入了虚拟主机。
我们可以有三种方式定义不同的虚拟主机:
基于IP --> IP1:80, IP2:80
基于端口 --> IP:80, IP:8080
基于域名 --> 使用同一IP的多个不同的主机名
下面我们分别配置实现三种方式的虚拟主机:
一、先关闭中心主机,并开启8080端口。
编辑/etc/httpd/conf/httpd.conf
二、在/etc//httpd/conf.d/目录下,创建一个virtual.conf文件(也可把虚拟主机的配置直接写进主配置文件中)
编辑其内容,如下
- NameVirtualHost 172.16.13.2:80 # 启用基于不同主机名的虚拟主机
- <VirtualHost 172.16.13.1:80> # 虚拟主机定义的容器
- ServerName # 定义主机名
- DocumentRoot "/var/www/a.org" # 定义站点资源所在的目录
- CustomLog /var/log/httpd/a.org/error_log combined # 定义错误日志信息的目录
- </VirtualHost>
- <VirtualHost 172.16.13.2:80> # 设定默认虚拟主机,即打开这个IP进入默认页面
- ServerName _default_
- DocumentRoot "/var/www/default"
- </VirtualHost>
- <VirtualHost 172.16.13.2:80>
- ServerName www.b.org
- DocumentRoot "/var/www/b.org"
- CustomLog /var/log/httpd/b.org/error_log combined
- <Directory "/var/www/b.org> # 定义站点资源目录的工作属性
- Options none # 定义目录下的网页文件能够在被访问时的访问属性
- AllowOverride authconfig # 定义用户访问的认证信息(在上一篇我们已经详细说明)
- AuthType basic
- AuthName "Restric area."
- AuthUserFile "/etc/httpd/.htpasswd" # 这里需要生成.htpasswd用户文件
- Require valid-user
- </Directory>
- </VirtualHost>
- <VirtualHost 172.16.13.2:80>
- ServerName www.c.org
- DocumentRoot "/var/www/c.org"
- CustomLog /var/log/httpd/c.org/error_log combined
- <Directory "/var/www/c.org>
- Options none
- AllowOverride none
- Order allow,deny
- Allow from all
- </Directory>
- </VirtualHost>
- <VirtualHost 172.16.13.1:8080> # 基于不同端口的认证
- ServerName www.d.org
- DocumentRoot "/var/www/d.org"
- CustomLog /var/log/httpd/d.org/error_log combined
- </VirtualHost>
三、创建virtual.conf配置文件中所需要的目录,及其主页面。
(这里主页面只写了一个标题)
例: 在/var/www/a.org/index.html中的内容:
- <h1>A Test</h1>
创建密码文件及用户tom
四、重启服务
# service httpd restart
五、打开浏览器验证
1、在windows中修改hosts文件,使之能解析我们的虚拟主机名
2、在浏览器中输入我们的主机名或IP地址打开即能得到我们在各个站点目录下的index.html文件。
http://
http://172.16.13.2
就这样虚拟主机就实现啦,你可以在主页上多写一些东西,整些好看的。这样确实很方面吧,一台主机就拥有多个站点呢。