前言:
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.com和www.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.com和www.minitoo.com。(本例以CentOS5.4.x86_64为平台)
- # yum -y install bind bind-chroot caching-nameserver //安装bind
- # cd /var/named/chroot/etc/
- # cp -p named.caching-nameserver.conf named.conf //生成全局配置文件
- # vi named.conf //编辑全局配置文件
- options {
- listen-on port 53 { 192.168.100.110; };
- ……
- allow-query { any; };
- allow-query-cache { any; };
- };
- ……
- view 100 {
- match-clients { any; };
- match-destinations { any; };
- recursion yes;
- include "/etc/named.zones";
- };
- # cp -p named.rfc1912.zones named.zones //生成主配置文件
- # vi named.zones //编辑主配置文件
- zone "yye1.com." IN {
- type master;
- file "yye1.com.zero";
- allow-update { none; };
- };
- zone "minitoo.com." IN {
- type master;
- file "minitoo.com.zero";
- allow-update { none; };
- };
- # cd ../var/named/ //切换区域配置文件目录
- # cp -p named.zero yye1.com.zero //生成yye1.com区域配置文件
- # cp -p named.zero minitoo.com.zero //生成minitoo.com区域配置文件
- # vi yye1.com.zero //修改yye1.com区域配置文件
- $TTL 86400
- @ IN SOA dnssvr.yye1.com. dongjun.yye1.com. (
- 42 ; serial (d. adams)
- 3H ; refresh
- 15M ; retry
- 1W ; expiry
- 1D ) ; minimum
- IN NS dnssvr.yye1.com.
- dnssvr IN A 192.168.100.110
- www IN A 192.168.100.100
- # vi minitoo.com.zero //修改minitoo.com区域配置文件
- $TTL 86400
- @ IN SOA dnssvr.yye1.com. dongjun.yye1.com. (
- 42 ; serial (d. adams)
- 3H ; refresh
- 15M ; retry
- 1W ; expiry
- 1D ) ; minimum
- IN NS dnssvr.yye1.com.
- www IN A 192.168.100.100
- # service named start //启动named服务
- Starting named: [ OK ]
2.若没有可用的DNS服务器,则需要修改客户机和服务器的hosts文件,添加域名www.yye1.com和www.minitoo.com的主机映射记录。
- # vi /etc/hosts
- 192.168.100.100 www.yye1.com www.minitoo.com
2)为虚拟主机准备网页文档。
1.创建/var/www/html/yye1.com文件夹,作为网站www.yye1.com的根目录。
- # mkdir -p /var/www/html/yye1.com
2.创建/var/www/html/minitoo.com文件夹,作为网站www.minitoo.com的根目录。
- # mkdir -p /var/www/html/minitoo.com
3.在以上两个文件夹中建立index.html文件,编写不同的网页内容。
- # echo "<h1>www.yye1.com</h1>" >; /var/www/html/yye1.com/index.html
- # echo "<h1>www.minitoo.com</h1>" >; /var/www/html/minitoo.com/index.html
3)配置并启动httpd服务器。
1.编写独立的虚拟主机配置文件,并通过Include配置加载到httpd.conf文件中。(为目录/var/www/html/minitoo添加Directory区域,并设置用户访问授权。)
- # vi /usr/local/httpd/conf/extra/httpd-vhosts.conf //创建独立的配置文件
- NameVirtualHost 192.168.100.100 //设置虚拟主机监听地址
- <VirtualHost 192.168.100.100>
- ServerAdmin dongjun@yye1.com
- DocumentRoot "/var/www/html/yye1.com"
- <Directory "/var/www/html/yye1.com"> //设置目录访问权限
- Order allow,deny
- Allow from all
- </Directory>
- ServerName yye1.com //主机名
- ServerAlias www.yye1.com //主机别名
- ErrorLog "/var/www/logs/yye1.com-error_log" //错误日志
- CustomLog "/var/www/logs/yye1.com-access_log" common //访问日志
- </VirtualHost>
- <VirtualHost 192.168.100.100>
- ServerAdmin dongjun@minitoo.com //管理员邮箱
- DocumentRoot "/var/www/html/minitoo.com" //网站根目录
- <Directory "/var/www/html/minitoo.com"> //设置目录访问权限
- AuthName "minitoo.com Directory" //定义受保护的领域名称,该内容将在浏览器弹出的认证对话框中显示
- AuthType Basic //设置认证类型,Basic:基本认证
- AuthUserFile /usr/local/httpd/conf/.minitoopwd //设置用于保存用户账户、密码的认证文件路径
- require valid-user //要求只有认证文件中的合法用户才能访问。其中alid-user表示所有合法用户,若只授权给单个用户,可改为指定的用户名(如:webadmin)
- Order allow,deny
- Allow from all
- </Directory>
- ServerName minitoo.com
- ServerAlias www.minitoo.com
- ErrorLog "/var/www/logs/minitoo.com-error_log"
- CustomLog "/var/www/logs/minitoo.com-access_log" common
- </VirtualHost>
- # mkdir -p /var/www/logs //创建日志存放目录
- # vi /usr/local/httpd/conf/httpd.conf //编辑主配置文件
- Include conf/extra/httpd-vhosts.conf
2.使用htpasswd工具创建用户认证数据文件,并添加授权用户dongjun、minitoo。
- # /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/conf/.minitoopwd dongjun
- // -c:生成.minitoopwd文件,只在第一次生成文件时需要。
- New password: //输入密码
- Re-type new password: //确认密码
- Adding password for user dongjun //添加dongjun用户成功
- # /usr/local/httpd/bin/htpasswd /usr/local/httpd/conf/.minitoopwd minitoo
- New password: //输入密码
- Re-type new password: //确认密码
- Adding password for user minitoo //添加dongjun用户成功
3.重启httpd服务器程序,并确认端口的监听状态。
- # service httpd restart
- # netstat -anput | grep 80
- tcp 0 0 :::80 :::* LISTEN 3844/httpd
4)在客户机中访问虚拟主机。
1.分别访问站点www.yye1.com和www.minitoo.com,应能看到不同的页面内容。
2.在访问站点www.minitoo.com时,会弹出用户认证窗口,通过认证后才被允许访问。