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

简介:

前言:

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,如需转载请自行联系原作者
相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
3月前
|
开发框架 .NET API
分享111个ASP主机域名源码,总有一款适合您
分享111个ASP主机域名源码,总有一款适合您
40 0
|
3月前
|
域名解析 监控 网络协议
分享40个主机域名PHP源码,总有一款适合你
分享40个主机域名PHP源码,总有一款适合你
82 1
|
3月前
|
域名解析 SQL 开发框架
分享88个ASP主机域名源码,总有一款适合您
分享88个ASP主机域名源码,总有一款适合您
46 4
|
9月前
|
运维 监控
【运维】在zabbix-server的web界面配置agent主机监控
【运维】在zabbix-server的web界面配置agent主机监控
|
6月前
|
应用服务中间件 网络安全 nginx
配置Harbor仓库本机与其他主机使用Docker login+域名连接
配置Harbor仓库本机与其他主机使用Docker login+域名连接
139 1
|
7月前
|
Java 关系型数据库 MySQL
项目实战---构建LAMP、Java Web开发环境(二)
项目实战---构建LAMP、Java Web开发环境(二)
47 0
|
7月前
|
关系型数据库 MySQL Java
项目实战---构建LAMP、Java Web开发环境(一)
项目实战---构建LAMP、Java Web开发环境(一)
82 0
|
7月前
|
监控
通过Zabbix Web界面查看主机的监控方式
通过Zabbix Web界面查看主机的监控方式
191 1
|
9月前
|
前端开发 PHP
web开发HTML生成PDF的三种解决方案(服务器端mpdf、html2canvas.js、浏览器打印、PDF虚拟打印机)
web开发HTML生成PDF的三种解决方案(服务器端mpdf、html2canvas.js、浏览器打印、PDF虚拟打印机)
779 0
|
10月前
|
开发框架 JavaScript 前端开发
web前端面试高频考点——Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM)
web前端面试高频考点——Vue原理(理解MVVM模型、深度/监听data变化、监听数组变化、深入了解虚拟DOM)
193 0