httpd服务之虚拟主机、访问控制、https配置详解

前言

上文讲解了http协议及httpd的一些特性,是学习web服务需要掌握的一些基础知识,接下来让我们进一步了解httpd相关功能的配置,本文讲解的是虚拟主机,访问控制及https等功能的配置。

httpd之虚拟主机

虚拟主机共分为三种模式:基于IP、基于端口、基于主机名(FQDN)

实验环境介绍

开始之前,先介绍一下httpd在CentOS6.6版本及文件:

版本:
     httpd-2.2.15(CentOS7升级为2.4系列)
配置文件:
        /etc/httpd/conf/httpd.conf
        /etc/httpd/conf.d/*.conf
服务脚本:
	/etc/rc.d/init.d/httpd
	脚本配置文件:/etc/sysconfig/httpd
模块目录:
	/etc/httpd/modules: 链接文件
	/usr/lib64/httpd/modules	
主程序:
	/usr/sbin/httpd: prefork 
	/usr/sbin/httpd.event: event
	/usr/sbin/httpd.worker: worker
日志文件目录:
	/var/log/httpd
	access_log: 访问日志
	error_log: 错误日志
站点文档根目录:
	/var/www/html/images/a.jpg
	http://www.magedu.com/images/a.jpg

注意:配置虚拟主机之前要关闭中心主机

#DocumentRoot "/var/www/html"

基于IP的虚拟主机

工作原理

基于IP虚拟主机.jpg


实战配置

案例要求:

DNS服务器:172.16.10.10

web服务器:两个IP 172.16.10.110、172.16.10.186

要求web服务器同时提供两个站点(www.scholar.com、ops.scholar.com)

www站点文件为/web/www/index.html 内容为www.scholar.com

ops站点文件为/web/ops/index.html 内容为ops.scholar.com

配置DNS正反向区域文件

#正向区域
$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                        2015041301
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns
@       IN      MX 10   mail
dns     IN      A       172.16.10.10
mail    IN      A       172.16.10.12
www     IN      A       172.16.10.110
ops     IN      A       172.16.10.186   #确保站点可以解析
pop     IN      CNAME   mail
ftp     IN      CNAME   www
#反向区域文件
$TTL 3600
@       IN      SOA     dns.scholar.com.        admin.scholar.com. (
                                                        2015041301
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns.scholar.com.
10      IN      PTR     dns.scholar.com.
12      IN      PTR     mail.scholar.com.
110      IN     PTR     www.scholar.com.
186     IN      PTR     ops.scholar.com.

检查语法,重启服务

1.jpg

注意:DNS具体配置详见博客

创建虚拟主机

[root@scholar ~]# vim /etc/httpd/conf/httpd.conf 

<VirtualHost 172.16.10.110:80>
        ServerName www.scholar.com
        DocumentRoot "/web/www"
</VirtualHost>
<VirtualHost 172.16.10.186:80>
        ServerName ops.scholar.com
        DocumentRoot "/web/ops"
</VirtualHost>

创建站点文件,检查语法,重启服务并设置开机自启

2.jpg

测试两个站点是否可以访问

3.jpg

4.jpg

测试成功,基于IP的虚拟主机配置完成

注意:测试时请确保测试主机DNS指向DNS服务器且处于离线状态,如果不想离线,请修改hosts文件,确保FQDN可以解析。如果访问失败,请关闭web服务器的selinux。

基于端口的虚拟主机

工作原理

基于端口虚拟主机.jpg

实战配置

案例要求:

DNS服务器:172.16.10.10

web服务器:172.16.10.110

要求web服务器开启8080端口,一个FQDN提供两个站点,访问www.scholar.com和

www.scholar.com:8080返回不同结果  

8080站点文件为/web/port/index.html 内容为 www.scholar.com:8080

创建虚拟主机

Listen 80
Listen 8080     #监听8080端口

<VirtualHost 172.16.10.110:80>
        ServerName www.scholar.com
        DocumentRoot "/web/www"
</VirtualHost>
<VirtualHost 172.16.10.110:8080>
        ServerName www.scholar.com
        DocumentRoot "/web/port"
</VirtualHost>

创建站点文件,测试语法,重启服务

5.jpg

测试新站点是否可以访问

6.jpg

访问成功,基于端口的虚拟主机配置完成

基于主机名的虚拟主机

工作原理

基于主机名虚拟主机.jpg

实战配置

案例要求:

DNS服务器:172.16.10.10

web服务器:172.16.10.110

要求web服务器提供两个站点(www.scholar.com dev.scholar.net )

www站点文件为/web/www/index.html 内容为www.scholar.com

dev站点文件为/web/dev/index.html      内容为dev.scholar.net

配置DNS添加区域及区域文件

[root@lab ~]# vim /etc/named.conf 

zone "scholar.net" IN {
        type master;
        file "scholar.net.zone";
};
zone "16.172.in-addr.arpa" IN {
        type master;
        file "172.16.10.net";
};
#正向区域文件
$TTL 3600
@       IN      SOA     dns.scholar.net.        admin.scholar.net. (
                                                        2015041302
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@       IN      NS      dns
dns     IN      A       172.16.10.10
www     IN      A       172.16.10.110
dev     IN      A       172.16.10.110
#反向区域文件
$TTL 3600
@       IN      SOA     dns.scholar.net.        admin.scholar.net. (
                                                        2015041302
                                                        2H
                                                        10M
                                                        7D
                                                        1D )
@          IN      NS      dns.scholar.net.
10.10      IN      PTR     dns.scholar.net.
10.110     IN      PTR     www.scholar.net.
10.110     IN      PTR     dev.scholar.net.

检查语法重启服务

7.jpg

创建虚拟主机

NameVirtualHost *:80

<VirtualHost *:80>
        ServerName www.scholar.com
        DocumentRoot "/web/www"
</VirtualHost>
<VirtualHost *:80>
        ServerName dev.scholar.net
        DocumentRoot "/web/dev"
</VirtualHost>

创建站点文件,检查语法,重启服务

8.jpg

测试站点是否可以访问

9.jpg

10.jpg

OK,访问成功,基于主机名的虚拟主机配置完成

httpd之访问控制

访问控制可分为两种模式:基于用户访问控制和基于IP访问控制

基于用户访问控制

工作原理

基于用户访问控制.jpg

实战配置

案例要求:

DNS服务器:172.16.10.10

web服务器:172.16.10.110

要求web服务器在www.scholar.com站点下创建一个子页为站点管理页,非授权用户禁止访问。

子页位置/web/www/admin/index.html 内容为Admin

创建子页

<VirtualHost *:80> 
        ServerName www.scholar.com
        DocumentRoot "/web/www"
<Directory "/web/www/admin">
         Options none
         AllowOverride AuthConfig
         AuthType Basic            #认证方式
         AuthName "Admin Area."    #质询时弹出的提示信息
         AuthUserFile /etc/httpd/conf/.htpasswd #用户账号密码存放位置
         Require valid-user   #所有合法用户都可访问,也可用定义单用户及组认证
</Directory>
</VirtualHost>

创建子页文件,检查语法,重启服务

11.jpg

提供认证文件

htpasswd
-c: 如果此文件事先不存在,则创建  #注意,只能在创建第一个用户时使用
-m:以md5的格式编码存储用户的密码信息
-D:删除指定用户

12.jpg

测试认证

13.jpg

输入账户密码

14.jpg

成功访问,基于用户的访问控制配置完成

基于IP的访问控制

工作原理

基于IP访问控制.jpg

实战配置

案例要求:

DNS服务器:172.16.10.10

web服务器:172.16.10.110

要求web服务器的dev.scholar.net站点,作为测试站点,只允许web服务器访问测试

添加访问控制IP

<VirtualHost *:80>
        ServerName dev.scholar.net
        DocumentRoot "/web/dev"
<Directory "/web/dev">
        Order allow,deny         #httpd2.4系列不再支持这种限定,改为新的限定方式
        allow from 172.16.10.110
</Directory>
</VirtualHost>

测试语法,重启服务

15.jpg

测试非授权IP能否正常访问

16.jpg

访问被拒绝,接下来用web服务器自测

17.jpg

可以访问,基于IP的访问控制配置完成

#elinks需要自行安装,-dump: 获取到页面数据后直接退出进程

httpd之https

前面我们讲了基于OpenSSL构建CA的过程,那么如何应用于httpd实现https呢,下面我们就来看一下,https通信是如何实现的。

http事务与https事务对比

https.png

https配置

实战配置

案例要求:

DNS服务器:172.16.10.10

web服务器:172.16.10.110

要求web服务器的www.scholar.com站点使用https

配置httpd工作于https

要配置https首先要安装mod_ssl模块,请自行安装

为服务端生成私钥,并为其提供证书

18.jpg

签署证书,我这里本机就是CA就自签了,CA配置详见博客

19.jpg

配置使用https的虚拟主机

[root@scholar ssl]# vim /etc/httpd/conf.d/ssl.conf 

SSLCertificateFile /etc/httpd/ssl/httpd.crt    #证书位置
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key #私钥位置

DocumentRoot "/web/www"  #虚拟主机站点文件
ServerName www.scholar.com:443   #虚拟主机ServerName

测试语法,重启服务,查看443端口是否被监听

20.jpg

将CA证书导出,重命名为*.crt格式,安装在受信任的根证书颁发机构中,测试https

21.jpg

OK,测试成功,已经实现https的访问,是不是很简单呢?到此,https配置完成

The end

httpd的虚拟主机、访问控制及https就讲解到这里啦,httpd的功能确实很强大,其它功能请见后续文章,下文将讲解编译安装httpd2.4.9和新特性说明及其它功能的实现,感兴趣的可见下文。

以上仅为个人学习整理,如有错漏,大神勿喷~~~

原创文章,作者:书生,如若转载,请注明出处:http://www.178linux.com/3181

(1)
书生书生
上一篇 2015-04-14 17:36
下一篇 2015-04-14 21:25

相关推荐

  • 使用Nmap扫描系统风险点

    0x00 迅速了解Nmap Nmap是一款扫描目标网络信息的工具,可以是黑客用来探测主机信息,收集情报的神器。也可以是运维人员扫描网络环境,及时发现系统漏洞的好帮手。 0x01 它的功能 1、主机发现(Host Discovery)#探测目标网络环境中有哪些主机是可以进行通信的,当然你也可以用ping命令试一下 2、端口扫描(Port S…

    Linux干货 2015-04-19
  • ansible——自动化运维工具

    Ansible SSH-based configuration management, deployment, and task execution system 运维工具的分类: agent:基于专用的agent程序完成管理功能,puppet, func, zabbix, … agentless:基于ssh服务完成管理,ansible, fab…

    Linux干货 2016-11-06
  • 初学Linux之程序进程管理工具汇总

    pstree, ps, pidof, pgrep, top, htop, glances, pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup 

    2017-12-16
  • 第十周练习-脚本部分

    1、写一个脚本 (1) 能接受四个参数:start, stop, restart, status start: 输出“starting 脚本名 finished.” … (2) 其它任意参数,均报错退出; #!/bin/bash # case $1 in start)     echo&…

    Linux干货 2016-12-31
  • 文件权限

    文件权限 文件属性       rw-r–r–表示文件权限     Root 表示文件所有者     Root 表示文件所属组     0 表示文件的大小 …

    Linux干货 2016-08-11
  • 马哥教育网络班22期第二周课程练习1-未闻花名

    1、Linux管理文件和目录的命令 命令 功能 命令 功能 pwd 显示当前目录 ls 查看目录下的内容 cd 改变所在目录 cat 显示文件的内容 grep 在文件中查找某字符 cp 复制文件 touch 创建文件 mv 移动文件 rm 删除文件 rmdir 删除目录 1.1 pwd命令 该命令的英文解释为print working directory(打…

    Linux干货 2016-08-22