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

相关推荐

  • ansible基础应用

    ansible基础 一、运维主要工作 ansible聚集以上功能于一身,能够完整轻易的实现应用部署和批量命令功能,适用于主机数量不太多,再大的用puppet。 二、ansible特性 (1)模块化:调用特定的模块,完成特定任务; (2)基于python语言实现,由paramiko,PYYAML和JINJa2三个关键模块组成 (3)部署简单:agentless…

    Linux干货 2017-01-04
  • 不忘初心,砥砺前行!

    这是本人第一次书写博客,难免有些小心翼翼,手足无措,但每个人都有这样的经历,转念一想也就释怀了。时光飞速,我们已不再年轻,从大学毕业的那天起,我们就再也不是小孩子了。 7月的天气总是那么折磨人,高温让我们步履维艰,在7月只想找一片月淡风轻的乐土,度过一个难熬的夏天,或找一间空调房,调大音量,享受午后时光。但这样的日却离我们很远,这个夏天我们背起行囊,远离故土…

    2017-07-11
  • Linux终端类型

    前言     终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。而linux的终端类型有物理终端,虚拟终端,串行终端,伪终端。  1.物理终端  /dev/console     在linux系统中,计算机显示器通常被称为控制台终端(console)。系统控制台,和系统相关…

    Linux干货 2016-10-14
  • DNS从入门到管理(一)

    DNS从入门到管理(一) DNS概念 DNS三步法 反向解析 主从DNS服务器的实现 子域授权 智能DNS 压力测试与DNS排错 DNS概述 DNS(Domain NameSystem,域名系统),域名和IP地址相互映射的一个分布式数据库,通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析。而DNS的主要作用,就是域名解析,将主机名解析成IP地址。…

    Linux干货 2016-10-06
  • Mariadb数据库复制系列(三):半同步复制

       实验三:半同步复制的实现 默认情况下,主从复制的结构中,主从节点之间复制操作是异步的,这样就有可能造成主从节点之间数据不一致的情况发生,所谓版同步复制就是指在一主多从的场景中,我们设定主节点与其中一个或多个从节点(一般是一个)的数据复制是同步进行的,从而保证了该从节点和主节点之间的数据的一致性。故当主节点发生故障时,就可以基于其他方式将该从节点提升为主…

    Linux干货 2016-11-24
  • 零距离接触软RAID0和RAID5以及逻辑卷LVM

    一、创建一个可用空间为1G的RAID1设备,文件系统为ext4,有一个空闲盘,开机可自动挂载至/backup目录 1、首先手动给虚拟机添加两块硬盘 2、添加硬盘后,无需关机,直接让内核扫描添加的磁盘 [root@centos6 ~]# echo '- – -' >&nbsp…

    Linux干货 2016-09-01