1.虚拟机工具:VMware

2.操作系统:CentOS6.5

3.网络环境:内网

4.任务:基于apache虚拟机三种方式的配置

5.说明:对apache虚拟主机的配置掌握程度,直接影响后续对nginx虚拟机的配置效率。

6.解决问题的关键:网上及书籍上对apache虚拟主机配置的方式基本上差不多,实际在做实验过程中发现,通过IP及端口号的实验都可以通过,就是基于主机名访问通不过,研究了一段时间,也查了好多资料,还是没有找出原因,最后通过对老男孩讲nginx配置虚拟主机的时候,当时恍然大悟;原来是我们学习过程都是基于本地xp系统之上,安装虚拟机,通过虚拟机安装linux做实验,所以要在windows平台:

“C:\WINDOWS\system32\drivers\etc”路径下找到hosts文件,在文件中增加主机名与相应IP地址对应。

127.0.0.1localhost

192.168.152.126  www.school.com

192.168.152.129  www.jw.com

192.168.152.130  ntc.jxatei.com

192.168.152.130  server1.com

#当然上面的配置一定要与apache虚拟主机httpd.conf配置是一致的;如果是公网呢?其实道理很简单,我们自己配置IP地址,域名服务商提供,绑定就可以了。要不就自己做(DNS)域名解析。

7.操作步骤:

一、基于IP

1. 假设服务器有个IP地址为192.168.152.130,使用ifconfig在同一个网络接口eth0上绑定3IP

[root@localhost root]# ifconfig eth0:1 192.168.152.126
[root@localhost root]# ifconfig eth0:2 192.168.152.128
[root@localhost root]# ifconfig eth0:3 192.168.152.129

2. 修改hosts文件,添加三个主机名与之一一对应:

192.168.152.126   www.jxatei.net
192.168.152.128   jwc.jxatei.net
192.168.152.129   ntc.jxatei.net

3. 建立虚拟主机存放网页的根目录,如在/www目录下建立schooljwntc文件夹,其中分别存放school.htmljw.htmlntc.html

/www/school/school.html
/www/jw/jw.html
/www/ntc/ntc.html

4. httpd.conf中将附加配置文件httpd-vhosts.conf包含进来,接着在httpd-vhosts.conf中写入如下配置:

 <VirtualHost 192.168.152.126:80>

  ServerName   www.school.com     #主机名

ServerAlias school.com    #别名
  DocumentRoot /www/school/

ErrorLog  "logs/school_error_log"
  <Directory "/www/school">
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow From All
   </Directory>
</VirtualHost>
<VirtualHost 192.168.152.128:80>
  ServerName  www.jw.com

ServerAlias jw.com
  DocumentRoot  /www/jw/
  <Directory "/www/jw">
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow From All
   </Directory>
</VirtualHost>
<VirtualHost 192.168.152.129:80>
  ServerName www.ntc.com

ServerAlias ntc.com
  DocumentRoot /www/ntc/
  <Directory "/www/ntc">
     Options Indexes FollowSymLinks
     AllowOverride None
     Order allow,deny
     Allow From All
   </Directory>
</VirtualHost>

5. 大功告成,测试下每个虚拟主机,分别访问www.school.comwww.jw.comwww.ntc.com

二、基于主机名

1. 设置主机名映射同一个IP,修改hosts

192.168.152.126  www.jxatei.net
192.168.152.128  jwc.jxatei.net
192.168.152.129  ntc.jxatei.net

2. 跟上面一样,建立虚拟主机存放网页的根目录

/www/school/school.html
/www/jw/jw.html
/www/ntc/ntc.html

3. httpd.conf中将附加配置文件httpd-vhosts.conf包含进来,接着在httpd-vhosts.conf中写入如下配置:

   为了使用基于域名的虚拟主机,必须指定服务器IP地址(和可能的端口)来使主机接受请求。可以用NameVirtualHost指令来进行配置。如果服务器上所有的IP地址都会用到,你可以用*作为NameVirtualHost的参数。NameVirtualHost指令中指明IP地址并不会使服务器自动侦听那个IP地址 这里设定的IP地址必须对应服务器上的一个网络接口。

  下一步就是为你建立的每个虚拟主机设定<VirtualHost>配置块,<VirtualHost>的参数与NameVirtualHost指令的参数是一样的。每个<VirtualHost>定义块中,至少都会有一个ServerName指令来指定伺服哪个主机和一个DocumentRoot指令来说明这个主机的内容存在于文件系统的什么地方。

  如果在现有的web服务器上增加虚拟主机,必须也为现存的主机建造一个<VirtualHost>定义块。其中ServerNameDocumentRoot所包含的内容应该与全局的保持一致,且要放在配置文件的最前面,扮演默认主机的角色。

NameVirtualHost *:80
<VirtualHost *:80>  

ServerName *

DocumentRoot /www/ 

</VirtualHost>

<VirtualHost *:80>

ServerName www.school.com

DocumentRoot /www/school/

<Directory "/www/school”>

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost> 

 <VirtualHost *:80>

ServerName www.jw.com

DocumentRoot /www/jw/

<Directory "/www/jw">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

<VirtualHost *:80>

ServerName www.ntc.com

DocumentRoot /www/ntc/

<Directory "/www/ntc">

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

</VirtualHost>

 4. 大功告成,测试下每个虚拟主机,分别访问www.school.comwww.jw.comwww.ntc.com

三、基于端口

1.  修改配置文件

将原来的

Listen 80
 
改为   Listen 8080

2. 更改虚拟主机设置:

<VirtualHost 192.168.152.126:80>
    DocumentRoot /var/www/school/
    ServerName www.school.com
</VirtualHost>
<VirtualHost 192.168.152.126:8080>
    DocumentRoot /var/www/jw
    ServerName www.jw.com
</VirtualHost>

 

补充:

基于主机名访问,关键在hosts文件

   工作机制:Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统再会将网址提交DNS域名解析服务器进行IP地址的解析,也就是说Hosts的IP解析优先级比DNS要高。

hosts文件在不同操作系统(甚至不同Windows版本)的位置都不大一样。

 具体作用:

1)  加快域名解析:对于要经常访问的网站,我们可以通过在Hosts中配置域名和IP的映射关系,提高域名解析速度。由于有了映射关系,当我们输入域名计算机就能很快解析出IP,而不用请求网络上的DNS服务器。

2)  方便局域网用户:在很多单位的局域网中,会有服务器提供给用户使用。但由于局域网中一般很少架设DNS服务器,访问这些服务器时,要输入难记的IP地址。这对不少人来说相当麻烦。可以分别给这些服务器取个容易记住的名字,然后在Hosts中建立IP映射,这样以后访问的时候,只要输入这个服务器的名字就行了。

3)  屏蔽网站域名重定向): 有很多网站不经过用户同意就将各种各样的插件安装到你的计算机中,其中有些说不定就是木马或病毒。对于这些网站我们可以利用Hosts把该网站的域名映射到错误的IP或本地计算机的IP,这样就不用访问了。在WINDOWS系统中,约定 127.0.0.1 为本地计算机的IP地址, 0.0.0.0是错误的IP地址。