分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能

前端之家收集整理的这篇文章主要介绍了分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

分别使用httpd-2.2httpd-2.4实现多虚拟主机配置和https功能

1、建立httpd服务,要求:

(1)提供两个基于名称的虚拟主机www1.ipsecx.com,www2.ipsecx.com;有单独的错误日志和访问日志;

(2)通过www1.ipsecx.com/server-status提供状态信息,且仅允许tom用户访问;

(3)www2.ipsecx.com不允许172.16.254.180主机访问;

2、为上面的第2个虚拟主机提供https服务;


实验环境

服务器端:CentOS 6.7 ,本地光盘yum源,httpd-2.2版本,IP地址:172.16.30.100

CA服务器:CentOS 7.2 ,本地光盘yum源,httpd-2.2版本,IP地址:172.16.254.144

客户机: CentOS7.2 IP地址:172.16.254.180

真机:Windows 7 IP地址:172.16.250.169


http2.2版本

配置多虚拟主机:

  1. CentOS6.7 安装httpd-2.2程序

    wKiom1ePTi6ysMPIAAGhiWKO7WU034.jpg

  2. 安装完成后,确认httpd程序的版本信息

    wKioL1ePTmKRof90AAKT4P-MyhI674.jpg

    查看httpd程序安装完成后,生成哪些文件


    wKioL1ePTs6RTvO0AAGTJy3r_IA903.jpg


  3. 配置虚拟主机www1.ipsecx.com www2.ipsecx.com

httpd的主配置文件 /etc/httpd/conf/httpd.conf

httpd的额外的配置文件/etc/httpd/conf.d/*.conf

为了避免因为修改配置文件,造成未知错误,可以将建立虚拟主机的配置文件,放在/etc/httpd/conf.d/ 目录下,这样,httpd服务在启动过程中,同样也会加载此目录的配置文件,而避免不必要的麻烦。

/etc/httpd/conf.d/目录下创建virtualhost.conf文件,配置以下内容


wKiom1ePTv_TohvRAAGMDuOYDyw460.jpg

在虚拟主机配置文件中定义的目录,必须要事先存在哟!否则会报错


wKiom1ePT3nwKkVMAAHJFl2XdH8622.jpg

在各个虚拟主机的根目录下面创建index.html的主页文件


wKiom1ePUFSggNE_AADHNSeYpcY765.jpg

配置完成后,验证配置文件是否存在错误显示正常。


wKioL1ePUIrgsh86AAC6QUlMyqA883.jpg

这个时候,大家很容易看到第一条信息,其实那并不是错误提示不能解析到服务器的FQDN,用localhost.localdomain代替主机名称,如果你不想让服务器在提示这种信息,可以在配置文件/etc/httpd/conf/httpd.conf中,按照以下方式修改修改完成后,验证,正常。

wKioL1ePT7SRLBgeAAH0efOvILo354.jpg

wKiom1ePUMPQEom-AABabY6vuKM319.jpg

启动httpd服务,确保服务正常启动

wKioL1ePUPLTnIuBAATFfjL12_c261.jpg

验证:

要想域名生效,必须互联网能够解析这两个域名,由于我并没有去注册这两个域名,那如何验证部署是否成功呢?

可以在客户机的hosts文件里面,添加自定义的主机映射关系,本案例以CentOS7为客户端,进行演示:

修改/etc/hosts文件添加以下内容


wKiom1ePURuxhTkHAAC8DlQpcdQ134.jpg

利用curl命令,验证服务器虚拟主机是否配置正确


wKioL1ePUU2QDTsLAACb6FJs7-A598.jpg


成功获取网站主页内容!让我们看看服务器端是否产生了日志

wKiom1ePUXOj5DK3AAJHf6uX67g740.jpg


至此,httpd2.2版本实现多虚拟主机配置完成!


实现httpd状态页的访问控制:

要想实现通过www1/server-status提供状态信息,且仅允许tom用户访问;那么这个/server-status在哪里呢?那好吧,咱们先看一下主配置文件/etc/httpd/conf/httpd.conf

通过搜索 server-status,找到这个关键位置


wKiom1ePUaDz3-v7AAEnu66A_NM465.jpg

那咱们就把这段代码复制到建立的virtualhost.conf文件里面吧,但是那个tom用户从哪里蹦出来的呢?难道是登录服务器的系统用户tom账号吗?oh,,你错了。这个tom账号,是用httpd程序里面自带的工具生成的,只允许登录web页面用的,是专属于这个服务的虚拟用户。这个工具就是htpasswd命令

那我们先生成一个叫做tom的账号吧,顺便在建立一个叫做jerry的账号吧。

Tom的账号密码均为tom

Jerry的账号密码均为jerry

账号,密码以md5加密方式,存储到/etc/httpd/conf.d/.htpasswd这个隐藏文件,为什么要隐藏,主要是怕别人偷看啦。哈哈哈

htpasswd �Cc �Cm �Cb /etc/httpd/conf.d/.htpasswd tom tom

htpasswd �Cm �Cb /etc/httpd/conf.d/.htpasswd jerry jerry

wKiom1ePUc-Qsl7UAAFpL-zC7rY565.jpg

好了,账号tom有了,那么virtualhost.conf文件应该怎么修改呢?如果你不会,那就照着我的方法来吧。

wKioL1ePUffzD0nlAAI3buVgXug758.jpg

修改配置文件,重启httpd进程,如何验证成功?那用我的电脑真机来验证一下吧,

首先验证一下,www1的主页面是否正常

wKiom1ePUiejSgp3AABWheVTYTs462.jpg

很好,没有问题,那在验证一下/server-status页面

wKiom1ePUl_widC8AAE1htkMUig017.jpg

很好,出现验证页面了,那么先利用jerry账号验证一下,由于认证不允许jerry账号访问,所以一直提示登录的这个页面,那在试一下tom账号。

哇,验证成功,显示出了status页面

wKioL1ePUoXyL08TAAO2hF7RC08326.jpg

通过认证,实现用户对httpd状态页的权限控制

配置网站禁止某IP访问:

这个问题是虚拟主机www2.ipsecx.com不允许172.16.254.180主机访问,那还是继续修改配置文件

仅在虚拟主机的www2的配置参数中修改修改完成之后,重启httpd服务

wKioL1ePUrmi2kNXAALtDF2aPpM189.jpg

登录172.16.254.180主机,利用curl命令测试一下,

wKiom1ePUvXiaQ9KAAKJiBJZBL8835.jpg

对虚拟主机www1.ipsecx.com,可以访问,但是对www2.ipsecx.com来说,http报文head信息,响应报文状态码403禁止客户端访问了!正常访问的状态码是200.

至此,实现了拒绝某用户对网站的访问权限功能


配置网站的https服务:

要想虚拟主机www2.ipsecx.com提供https服务,那么httpd服务需要装载一个mod_ssl模块,默认未安装。

服务器安装mod_ssl模块

wKioL1ePUxuTIOdLAAEcfusTpiw108.jpg

安装完成后,我们可以看到此模块已经在/etc/httpd/conf.d目录下,生成一个ssl.conf配置文件


wKioL1ePU0nwuq7sAAD8qu1eeQU119.jpg

打开配置文件/etc/httpd/conf.d/ssl.conf文件,在这个文件里面需要修改的配置项,仅有两项,如下图:

wKiom1ePVBKzQ4QaAACRh-7XRMk778.jpg

wKiom1ePU3izD9cCAAJ5Orwv1pg494.jpg


第一项:填写服务器从CA申请的证书文件路径,

第二项:填写服务器的私钥文件路径

下面,小编将演示一下如何搭建私有CA,并且服务器从CA申请证书的操作步骤。

  1. 搭建私有CA机构

    创建必要文件

    wKiom1ePVO-gUM_WAACJhLnS6AY395.jpg


    生成CA机构私钥

wKioL1ePVRiA17arAAESbXE4qRQ187.jpg

生成自签证书

wKiom1ePVUuCcKkJAAK8hSgDTpE265.jpg

到此私有CA搭建基本完成,下面服务器开始申请证书:

  1. web服务器端创建私钥文件,并生成申请证书

    wKioL1ePVYKx_NZ7AAUMlU7HiGU036.jpg

3.web服务器生成的证书发送给CA服务器

wKiom1ePVayhadrVAAId2VQkGOs549.jpg

CA服务器签发web网站证书


wKioL1ePWViTb1MrAAQN7z6qPXw032.jpg-wh_50


查看证书:

wKiom1ePVgvAXdbcAACXftWcPM0436.jpg

CA服务器签发的证书,发送给web服务器,放置在某特定目录

wKioL1ePVi-BGTAfAAKkW6gnMRg383.jpg

箭头指示的是证书文件,画线的文件是私钥文件,这两个文件路径要记住,因为要修改/etc/httpd/conf.d/ssl.conf配置文件

修改/etc/httpd/conf.d/ssl.conf配置文件

wKiom1ePVpjh44_aAADGyZ4T8Fg676.jpg

wKiom1ePWd3iW9jLAAJFSfLfx2A946.jpg-wh_50

修改完成之后,重启httpd服务,查看服务器监听端口

wKioL1ePVwOBETJjAAGQph-k_1E332.jpg

利用浏览器验证https服务是否开启


wKioL1ePVyuT8T4RAAD9gWIgmGs730.jpg

点击继续浏览此网站

wKioL1ePV0_SujDgAABfUITW5kg453.jpg

至此,配置完成网站提供https功能

======================================================================================

======================================================================================


对于httpd-2.4 版本,创建虚拟主机,以及权限定义,如下:

wKiom1ePV5LT3EiMAAKyMx7TTko185.jpg

测试效果如下:

  1. 测试只允许tom账户登录jerry账户无法登陆(创建账号密码的步骤,同上面)

    wKiom1ePV-XRuLmtAAVlYKrXQa4649.png

    wKioL1ePWGaxkAh7AAM5rOKoUhA305.jpg

  1. 测试,禁止172.16.254.180访问虚拟主机www2.ipsecx.com,其他主机可以访问。

    wKiom1ePWKyTjV4oAAQi8PjrTkA592.jpg

    在这里可以看到http报文的响应状态码是403禁止访问。

    在看一下其他IP地址的客户端的访问请求,如下图所示,访问一切正常!

    wKioL1ePWOrQ_xBuAAJxvArkqVk736.jpg

由于作者水平有限,本文错漏缺点在所难免,希望读者批评指正。谢谢!

猜你在找的CentOS相关文章