LAMP系列:基于域名的虚拟WEB主机

  1. 云栖社区>
  2. 博客>
  3. 正文

LAMP系列:基于域名的虚拟WEB主机

余二五 2017-11-23 20:58:00 浏览1160
展开阅读全文

前言:

Apache HTTP Server 之所以受到众多企业的青睐,得益于其代码开源、跨平台、功能模块化、可灵活定制等诸多优点,不仅性能稳定,在安全性方面的表现也十分出色,基于上一篇博文《LAMP系列:构建httpd网站服务器》本篇博文通过一个案例的实施,将进一步学习httpd服务器的访问控制、虚拟Web主机的构建等相关知识。 
------------------------------------------------------------------------- 
在上一篇博文《LAMP系列:构建httpd网站服务器》中,细心的人可能会发现,在访问AWStats日志分析系统时并不需要提供帐号和密码,只要知道对应的网址就可以获知WEB站点的访问情况,这给服务器的安全带来了隐患。在本篇博文中将解决这个问题。

注:本案例中的Apache是用源码安装,详细安装方法请参考我的另一篇博文《LAMP系列:构建httpd网站服务器http://minitoo.blog.51cto.com/4201040/864291 
------------------------------------------------------------------------- 
案例环境一:基于域名的虚拟WEB主机

公司的网站服务器使用的IP地址为192.168.100.100,并使用该IP地址注册了两个域名www.yye1.comwww.minitoo.com。服务器中已经安装好了RHEL5操作系统,并通过源码编译的方式安装了Web服务器软件httpd-2.2.17,现需要对httpd服务进行配置,以支持同时运行这两个Web站点。

案例描述:

1)站点www.yye1.com的网页文档存放在服务器的/var/www/html/yye1.com目录下。 
2)站点www.minitoo.com的网页文档存放在服务器的/var/www/html/minitoo.com目录下。 
3)构建基于域名的虚拟主机服务器,用于支撑以上两个WEB站点。 
4)其中www.minitoo.com站点只对公司内部员工开放,访问时需进行用户认证。

案例实施:

1)为虚拟主机提供域名解析 
1.先搭建一台DNS服务器,负责解析域名www.yye1.comwww.minitoo.com。(本例以CentOS5.4.x86_64为平台)


  1. # yum -y install bind bind-chroot caching-nameserver     //安装bind  
  2. # cd /var/named/chroot/etc/  
  3. # cp -p named.caching-nameserver.conf named.conf      //生成全局配置文件  
  4. # vi named.conf         //编辑全局配置文件  
  5.     options {  
  6.                      listen-on port 53 { 192.168.100.110; };  
  7.                      ……  
  8.                      allow-query     { any; };  
  9.                      allow-query-cache { any; };  
  10.                    };  
  11.      ……  
  12.      view 100 {  
  13.                     match-clients      { any; };  
  14.                     match-destinations { any; };  
  15.                     recursion yes;  
  16.                     include "/etc/named.zones";  
  17.                     };  
  18. # cp -p named.rfc1912.zones named.zones        //生成主配置文件  
  19. # vi named.zones      //编辑主配置文件  
  20.         zone "yye1.com." IN {  
  21.                       type master;  
  22.                       file "yye1.com.zero";  
  23.                       allow-update { none; };  
  24.                       };  
  25.         zone "minitoo.com." IN {  
  26.                       type master;  
  27.                       file "minitoo.com.zero";  
  28.                       allow-update { none; };  
  29.                       };   
  30. # cd ../var/named/                                   //切换区域配置文件目录  
  31. # cp -p named.zero yye1.com.zero          //生成yye1.com区域配置文件  
  32. # cp -p named.zero minitoo.com.zero    //生成minitoo.com区域配置文件   
  33. # vi yye1.com.zero                                  //修改yye1.com区域配置文件   
  34.  
  35.   $TTL    86400  
  36.   @               IN SOA  dnssvr.yye1.com.      dongjun.yye1.com. (  
  37.                                           42              ; serial (d. adams)  
  38.                                           3H              ; refresh  
  39.                                           15M             ; retry  
  40.                                           1W              ; expiry  
  41.                                           1D )            ; minimum  
  42.           IN      NS      dnssvr.yye1.com.  
  43.   dnssvr  IN      A       192.168.100.110  
  44.   www     IN      A       192.168.100.100  
  45. # vi minitoo.com.zero                  //修改minitoo.com区域配置文件 
  46.  
  47. $TTL    86400  
  48. @               IN SOA  dnssvr.yye1.com.      dongjun.yye1.com. (  
  49.                                          42              ; serial (d. adams)  
  50.                                          3H              ; refresh  
  51.                                          15M             ; retry  
  52.                                          1W              ; expiry  
  53.                                          1D )            ; minimum  
  54.          IN      NS      dnssvr.yye1.com.  
  55. www     IN      A       192.168.100.100  
  56. # service named start       //启动named服务  
  57. Starting named:                                            [  OK  ] 

 

2.若没有可用的DNS服务器,则需要修改客户机和服务器的hosts文件,添加域名www.yye1.comwww.minitoo.com的主机映射记录。


  1. # vi /etc/hosts  
  2.    192.168.100.100         www.yye1.com www.minitoo.com 

2)为虚拟主机准备网页文档。 
1.创建/var/www/html/yye1.com文件夹,作为网站www.yye1.com的根目录。


  1. # mkdir -p /var/www/html/yye1.com 

2.创建/var/www/html/minitoo.com文件夹,作为网站www.minitoo.com的根目录。


  1. # mkdir -p /var/www/html/minitoo.com 

3.在以上两个文件夹中建立index.html文件,编写不同的网页内容。


  1. # echo "<h1>www.yye1.com</h1>" >; /var/www/html/yye1.com/index.html  
  2. # echo "<h1>www.minitoo.com</h1>" >; /var/www/html/minitoo.com/index.html 

3)配置并启动httpd服务器。 
1.编写独立的虚拟主机配置文件,并通过Include配置加载到httpd.conf文件中。(为目录/var/www/html/minitoo添加Directory区域,并设置用户访问授权。)


  1. # vi /usr/local/httpd/conf/extra/httpd-vhosts.conf   //创建独立的配置文件
  2.  
  3. NameVirtualHost 192.168.100.100  //设置虚拟主机监听地址
  4.   
  5.   <VirtualHost  192.168.100.100> 
  6.           ServerAdmin dongjun@yye1.com 
  7.           DocumentRoot "/var/www/html/yye1.com" 
  8.           <Directory "/var/www/html/yye1.com">  //设置目录访问权限
  9.                   Order allow,deny 
  10.                   Allow from all 
  11.           </Directory> 
  12.           ServerName yye1.com  //主机名
  13.           ServerAlias www.yye1.com  //主机别名
  14.           ErrorLog "/var/www/logs/yye1.com-error_log"  //错误日志
  15.           CustomLog "/var/www/logs/yye1.com-access_log" common  //访问日志
  16.   </VirtualHost> 
  17.    
  18.   <VirtualHost  192.168.100.100> 
  19.           ServerAdmin dongjun@minitoo.com  //管理员邮箱
  20.           DocumentRoot "/var/www/html/minitoo.com"  //网站根目录
  21.           <Directory "/var/www/html/minitoo.com">  //设置目录访问权限
  22.                   AuthName "minitoo.com Directory"  //定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
  23.                   AuthType Basic  //设置认证类型,Basic:基本认证
  24.                   AuthUserFile /usr/local/httpd/conf/.minitoopwd  //设置用于保存用户账户、密码的认证文件路径
  25.                   require valid-user  //要求只有认证文件中的合法用户才能访问。其中alid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如:webadmin)
  26.                   Order allow,deny 
  27.                   Allow from all 
  28.           </Directory> 
  29.           ServerName minitoo.com 
  30.           ServerAlias www.minitoo.com 
  31.           ErrorLog "/var/www/logs/minitoo.com-error_log" 
  32.           CustomLog "/var/www/logs/minitoo.com-access_log" common 
  33. </VirtualHost> 
  34.  
  35.  
  36. # mkdir -p /var/www/logs        //创建日志存放目录 
  37. # vi /usr/local/httpd/conf/httpd.conf          //编辑主配置文件 
  38.     Include conf/extra/httpd-vhosts.conf  

2.使用htpasswd工具创建用户认证数据文件,并添加授权用户dongjun、minitoo。


  1. # /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.minitoopwd dongjun  
  2.     // -c:生成.minitoopwd文件,只在第一次生成文件时需要。  
  3.     New password:                                                 //输入密码  
  4.     Re-type new password:                                  //确认密码  
  5.     Adding password for user dongjun             //添加dongjun用户成功  
  6. # /usr/local/httpd/bin/htpasswd /usr/local/httpd/conf/.minitoopwd minitoo  
  7. New password:                                                    //输入密码  
  8. Re-type new password:                                     //确认密码  
  9. Adding password for user minitoo                 //添加dongjun用户成功 

3.重启httpd服务器程序,并确认端口的监听状态。


  1. # service httpd restart  
  2. # netstat -anput  | grep 80  
  3. tcp        0      0 :::80                       :::*                        LISTEN      3844/httpd 

4)在客户机中访问虚拟主机。 
1.分别访问站点www.yye1.comwww.minitoo.com,应能看到不同的页面内容。


image

2.在访问站点www.minitoo.com时,会弹出用户认证窗口,通过认证后才被允许访问。

image










本文转自 jundong 51CTO博客,原文链接:http://blog.51cto.com/minitoo/864705,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论
余二五
+ 关注