chunjihong 发表于 2015-8-2 10:22:15

Apache的虚拟主机设置

  一台Web服务器如果只放一个主页,似乎有点浪费。那我们是否可以多放几个主页,
  给不同的用户提供不同的主页访问呢?当然可以了,这就需要用到Apache的虚拟主机设置了。
  Apache的虚拟主机分为三类:基于端口的虚拟主机,基于IP的虚拟主机以及基于域名的虚拟主机。下面,我就开始学习虚拟主机的配置吧。
  
  (1) 基于端口的虚拟主机
  Apache提供了基于端口的虚拟主机,这给那些域名和IP地址有限的用户提供了提供多
  个主页的可能。基于端口的虚拟主机,顾名思义,就是采用同样的域名或IP地址,但采用不同的端口来实现提供多个主页访问服务。
  配置虚拟主机,需要用到Apache配置文件虚拟主机部分。具体说明,可以参考Apache配置文件说明部分。下面,我们来实现基于端口的虚拟主机。我们以域名:www.centos.org为例,采用80和8080两个端口来实现基于端口的虚拟主机。
  首先,修改主配置文件,找到以下这行并添加一行:
  Listen 80
  Listen 8080
  这里,让httpd服务监听端口80和8080。否则,配置的虚拟主机将无法正常访问。接下,来修改虚拟主机部分如下:
  #NameVirtualHost*:80
  
  ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /var/www/virt1
   ServerName www.centos.org
  ErrorLoglogs/dummy-host.example.com-error_log
  CustomLog logs/dummy-host.example.com-access_logcommon
  
  
  ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /var/www/virt2
   ServerName www.centos.org
  ErrorLog logs/dummy-host.example.com-error_log
  CustomLoglogs/dummy-host.example.com-access_log common
  
  修改完毕!下面,我们去生成相应目录和主页文件。
  #mkdir /var/www/virt1 /var/www/virt2
  #echo “This isVirtual Host 1!” >/var/www/virt1/index.html
  #echo “This isVirtual Host 2!” >/var/www/virt2/index.html
  目录和主要创建完毕,去测试吧。……不,等一下。刚才我们都是以root身份建立的目录和文件,权限肯定有问题,还需要修改权限哦。
  #chmod 755 ?R/var/www/virt1 /var/www/virt2
  现在一切OK,可以测试了。
  #links www.centos.org
  This is Virtual Host 1!
  #links www.centos.org:8080
  This is Virtual Host 2!
  OK,测试正确,任务完成。
  (2) 基于IP的虚拟主机
  基于端口的虚拟主机是对于那些IP地址不宽裕的情况而言的,如果你有充足的IP地址,
  那么可以配置基于IP的虚拟主机。这里,我们将使用192.168.0.38和192.168.0.39两个IP地址来实现基于IP的虚拟主机。
  首先,修改httpd.conf文件如下:
  #NameVirtualHost*:80
  
  ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /var/www/virt1
   ServerName www.centos.org
  ErrorLoglogs/dummy-host.example.com-error_log
  CustomLoglogs/dummy-host.example.com-access_log common
  
  
  ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /var/www/virt2
   ServerName www.centos.org
  ErrorLog logs/dummy-host.example.com-error_log
  CustomLoglogs/dummy-host.example.com-access_log common
  
  这里,端口都是80,虚拟主机IP地址分别设置为192.168.0.38和192.168.0.39。修改完毕,可以进行测试了。
  那么,如果IP地址不充裕,又想实现基于IP的虚拟主机该怎么办呢?这里,我们可以通过一个网卡绑定两个IP地址的方法来实现。首先,可以复制一份网卡的配置文件。
  #cp/etc/sysconfig/network-script/ifcfg-eth0/etc/sysconfig/network-script/ifcfg-eth0:1
  然后,我们修改ifcfg-eth0:1这个文件的IP地址即可。
  # Advanced Micro Devices 79c970
  DEVICE=eth0:1
  BOOTPROTO=static
  BROADCAST=192.168.0.255
  HWADDR=00:0C:29:40:1D:A2
  IPADDR=192.168.0.38
  IPV6INIT=yes
  IPV6_AUTOCONF=yes
  NETMASK=255.255.255.0
  NETWORK=192.168.0.0
  ONBOOT=yes
  修改完毕后,启动此网卡,或者重启网络服务。
  #service networkrestart
  Shutting down interfaceeth0: [ OK ]
  Shutting down interfaceeth1: [ OK ]
  Shutting down loopbackinterface: [ OK ]
  Bridging up loopbackinterface: [ OK ]
  Bridging up interface eth0: [ OK ]
  Bridging up interface eth1: [ OK ]
  重启完毕,就可以开始配置基于IP的虚拟主机了。
  
  (3) 基于域名的虚拟主机
  如果只有一个IP地址,但是却有多个域名,那么我们可以实现基于域名的虚拟主机。
  在下面的实验中,我们将用到以下环境:
  IP地址:192.168.0.39
  域名:x.centos.org xx.centos.org
  首先,我们需要让这两个域名能解析到。域名解析可以使用DNS来实现,由于是基于
  域名的虚拟主机,我们只需配置正向解析即可。当然,这里只做实验用,我们采用更为简单的方法,修改/etc/hosts文件如下:
  # Do not remove the followingline, or various programs
  # that require networkfunctionality will fail.
  127.0.0.1 x.centos.org x localhost.localdomain localhost
  ::1 localhost6.localdomain6 localhost6
  192.168.0.39 x.centos.org
  192.168.0.39 xx.centos.org
  修改完毕后,我们将本机DNS设置为192.168.0.39。然后,我们来进行基于域名的虚拟主机配置。首先,修改httpd.conf文件如下:
  NameVirtualHost192.168.0.39:80
  
  ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /var/www/virt1
   ServerName x.centos.org
  ErrorLoglogs/dummy-host.example.com-error_log
  CustomLoglogs/dummy-host.example.com-access_log common
  
  
  ServerAdmin webmaster@dummy-host.example.com
   DocumentRoot /var/www/virt2
   ServerName xx.centos.org
  ErrorLog logs/dummy-host.example.com-error_log
  CustomLoglogs/dummy-host.example.com-access_log common
  
  然后,保存退出,并重启httpd服务,就可以进行测试了。
页: [1]
查看完整版本: Apache的虚拟主机设置