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的虚拟主机

工作原理

实战配置

案例要求:

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正反向区域文件

检查语法,重启服务

注意: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>

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

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

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

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

基于端口的虚拟主机

工作原理

实战配置

案例要求:

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 80Listen 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>

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

测试新站点是否可以访问

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

基于主机名的虚拟主机

工作原理

实战配置

案例要求:

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";};

检查语法重启服务

创建虚拟主机

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

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

测试站点是否可以访问

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

httpd之访问控制

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

基于用户访问控制

工作原理

实战配置

案例要求:

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>

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

提供认证文件

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

测试认证

输入账户密码

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

基于IP的访问控制

工作原理

实战配置

案例要求:

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>

测试语法,重启服务

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

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

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

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

httpd之https

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

http事务与https事务对比

https配置

实战配置

案例要求:

DNS服务器:172.16.10.10

web服务器:172.16.10.110

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

配置httpd工作于https

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

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

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

配置使用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端口是否被监听

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

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

The end

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

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

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2015-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)

在本教程中,我们将在Ubuntu 14.04上重新安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash...

1150
来自专栏禅林阆苑

启用mac自带Apache & 虚拟主机配置 【原创】

启用mac自带Apache & 虚拟主机配置 Write By CS逍遥剑仙 我的主页: www.csxiaoyao.com GitHub: ...

3076
来自专栏电光石火

apache域名绑定(appserv环境)

假定你的服务器网站根目录下有两个子目录,一个为 /appserv/www/web01,另一个为 /appserv/www/web02 。现在你想访问 www...

4055
来自专栏我的博客

apache多站点配置汇总

今天一个网友咨询多站点配置,于是就捣鼓了一番,现在总结出来给大家分享 多站点总的来说就三种:基于多ip多站点,基于单ip多域名多站点,基于单ip多端口站点 1、...

4594
来自专栏Hadoop实操

如何在CM中使用Parcel包部署Livy及验证

在前面的文章《如何打包Livy和Zeppelin的Parcel包》Fayson介绍了使用脚本打包Livy和Zeppelin的Parcel包,本篇文章Fayson...

5014
来自专栏PHP在线

apache服务器配置

昨天弄了个PHP小程序,想在本地跑一下测试,可是工作电脑没有安装环境,于是下载了一个wamp,一路畅通,Apache、Mysql、PHP就 全有了。启动wamp...

3826
来自专栏WindCoder

ELK实时日志管理-系统搭建

Filebeat轻量级的日志传输工具,可以读取系统、nignx、apache等logs文件,监控日志文件,传输数据到Elasticsearch或者Logst...

2712
来自专栏云计算教程系列

如何在CentOS 7上安装Elasticsearch 1.7,Logstash 1.5和Kibana 4.1(ELK Stack)

在本教程中,我们将介绍在CentOS 7上安装Elasticsearch ELK Stack,即Elasticsearch 1.7.3,Logstash 1.5...

2301
来自专栏云计算教程系列

如何在CentOS 7上安装Elasticsearch,Logstash和Kibana

在本教程中,我们将介绍在CentOS 7上安装Elasticsearch ELK Stack,即Elasticsearch 2.2.x,Logstash 2.2...

1932
来自专栏PHP在线

apache服务器配置

昨天弄了个PHP小程序,想在本地跑一下测试,可是工作电脑没有安装环境,于是下载了一个wamp,一路畅通,Apache、Mysql、PHP就 全有了。启动wamp...

61315

扫码关注云+社区

领取腾讯云代金券