1.建立http服务,要求:
(1)提供两个基于名称的虚拟主机:
www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1/error_log,访问日志为/var/log/httpd/www1/access_log
www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2/error_log,访问日志为/var/log/httpd/www2/access_log
(2)通过www1.stuX.com/server-status输出其状态信息,且要求只允许提供账号的用户访问;
(3)www1不允许192.168.1.0/24网络中的主机访问;

(1)在服务器上安装httpd-2.4 (centos 7 默认为http-2.4 version)

  yum install -y httpd   (httpd主程序)

  yum install -y httpd-tools    (httpd测试工具)

(2)创建相应目录及添加模块文件

  a.创建相应目录

  mkdir //web/vhosts/{www1,www2}  -pv

  mkdir /var/log/httpd/{www1,www2}  -pv

  b.添加mod_status.so 模块文件

  vim /etc/httpd/conf.modules/oo-proxy.conf   (该文件中定义了httpd动态模块)

  行尾添加:

  LoadModule status_module modules/mod_status.so

  保存退出

  systemctl restart httpd   重启生效

  httpd -M | grep status   (检查模块是否装载)

(3)按要求添加两个虚拟主机配置文件;

  a.  www1.stuX.com 配置文件

  vim  /etc/httpd/conf.d/Virtual1.conf  (创建虚拟主机1配置文件) 

  <VirtualHost 192.168.8.16:80>       (定义虚拟主机监听地址与端口)
  ServerName "www1.stuX.com"  (定义虚拟主机服务名称)
  DocumentRoot "/web/vhosts/www1"  (定义URL路径映射目录)
  <Directory /web/vhosts/www1>  (定义允许URL路径映射目录访问。注:http-2.2无需定义该项)
    options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
  </Directory>
  ErrorLog /var/log/httpd/www1/error_log  (定义该虚拟主机错误日志文件存放位置)
  CustomLog /var/log/httpd/www1/access_log combined  (定义该虚拟主机访问日志存放位置以及日志格式)
  <Location /server-status>  (定义/server-status访问页面需指定用户访问)
    SetHandler server-status
    AuthType Basic  (定义认证类型)
    AuthName "please give username and passwd for status Page"  (定义认证返回字符串)
    AuthUserFile "/etc/httpd/conf/.passwd"  (定义用户文件保存位置)
    Require user tom juerry  (定义允许访问server-status页面的用户,此处允许 tom ,juerry访问)
  </Location>
  </VirtualHost>

  

  b.www2.stuX.com 配置文件

  vim /etc/httpd/conf.d/Virutal2.conf  (创建虚拟主机2配置文件) 

  <VirtualHost 192.168.8.16:80>     (定义虚拟主机2监听地址与端口)
  ServerName www2.stuX.com     (定义虚拟主机2服务域名)
  DocumentRoot "/web/vhosts/www2"  (定义URL路径映射目录)
  ErrorLog /var/log/httpd/www2/error_log  (定义错误日志文件位置)
  CustomLog /var/log/httpd/www2/access_log combined  (定义访问日志文件位置及日志文件格式)
  <Directory /web/vhosts/www2>  (定义URL映射目录访问权限)
  options Indexes FollowSymLinks
  AllowOverride None
  <RequireAll>  (访问条件需放在该配置模块下)
    Require not ip 192.168.1.0/24  (定义拒绝 192.168.1.0/24 网段访问)
    Require all granted  (允许所有访问,一般拒绝访问在前,允许所有访问在后的方式定义访问条件)
  </RequireAll>
  </Directory>
  </VirtualHost>

  

(4) 创建用户文件并添加用户

  htpasswd -c /etc/httpd/conf/.passwd tom  (添加用户tom)

  输入密码后用户信息自动保存至 .passwd文件

  htpasswd /etc/httpd/conf/.passwd juerry   (添加juerry 用户,注:-c选项为初次创建用户文件时使用,之后创建用户无需使用-c)

  

  

(5)创建主页面文件;

  a.创建www1虚拟主机主页面文件

  vim /web/vhosts/www1/index.html 

  <title>
  This is httpd-2.4 Page
  </title>
  <body>
  <h1>
  this is www1.stuX.com Test Page
  </h1>
  </body>

  b.创建www2虚拟主机主页面文件

  vim /web/vhosts/www2/index.html  

  <title>
  This is httpd-2.4 Page
  </title>
  <body>
  <h1>
  This is www2.stuX.com Test Page
  </h1>
  </body

  systemctl restart httpd   重启服务

  systemctl stop firewalld  关闭防火墙

  setenforce 0   关闭 selinux

  

(6)在DNS服务器主机上添加虚拟主机域名解析区域;

  a.添加解析区域

  vim /etc/named.rfc1912.zones   (编辑区域配置文件)

  尾部添加行:

  zone "stuX.com" IN {    (添加 stuX.com解析区域)
  type master;    (定义区域类型,master为主服务器)
  file "stuX.com.zone";  (定义区域资源解析库文件名)
  };

  

  b.添加资源解析库文件

  vim /var/named/stuX.com.zone  (注意:文件名需与解析区域指定文件名一致)  

  $TTL 3600
  $ORIGIN stuX.com.
  @   IN    SOA   ns1.stuX.com.   admin.stuX.com. (
        10      (定义初始序列号,注:每次修改解析库文件将序列号+1,便于从服务器同步)
        2H    (定义刷新时间间隔)
        10M    (定义重传时间间隔)
        1W    (定义过期时间间隔)
        1D     (定义否定答案在客户端缓存时间)
        )  
  @   IN    NS   ns1.stuX.com.
  ns1  IN   A    192.168.8.16
  www1   IN    A    192.168.8.16
  www2   IN    A   92.168.8.16

(7) 测试

  http://www1.stuX.com

  http://www2.stuX.com

  分别按需求访问2个虚拟主机,测试成功

2.为上面的2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1)要求使用证书认证,证书中要求使用国家(CN),州(Beijing),城市(Beijing),组织为(MageEdu);
(2)设置部门为Ops,主机名为www2.stuX.com;

(1) 在httpd服务器端生成证书

  cd /etc/pki/CA/

  (umask 077;openssl genrsa -out private/cakey.pem  4096     (生成4096位私钥)

  openssl req -new -key private/cakey.pem -out httpd.csr -days 365   (生成证书,有效期365天)

  按要求输入内容,注:server name 为 www2.stuX.com  ,此项关键,必须与URL名称相同

  scp httpd.csr root@192.168.8.16:/etc/pki/CA/     (将httpd服务器端生成的证书文件复制到CA服务器)

(2)在CA服务器端签发证书

  cd /etc/pki/CA/

  (umask 077;openssl genrsa -out private/cakey.pem 4096   (生成4096位私钥)

  openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365

  按提示输入CA自签证书相关信息

  

  为CA提供所需的目录及文件;
  ]# mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
  ]# touch /etc/pki/CA/{serial,index.txt}
  ]# ECHO 01 > /etc/pki/CA/serial

  

  openssl ca -in httpd.csr -out httpd.crt  -days 365   (使用CA签署证书,有效期365天)

  openssl x509 -in httpd.crt -noout -serial -subject    (查询签署后证书相关信息是否吻合)

scp httpd.crt root@192.168.8.16:/etc/pki/CA/         (将签署好的证书文件复制给httpd服务器端)

(3)在httpd服务器端安装mod_ssl模块及配置ssl相关信息

  yum install mod_ssl

  yum info mod_ssl

  rpm -qi mod_ssl      (查询ssl模块相关信息)

  

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

  DocumentRoot "/web/vhosts/www2"    (设置ssl URL 映射目录)
  ServerName www1.stuX.com:443  (设置SSL服务域名与端口)

  <Directory "/web/vhosts/www1">  (设置允许访问URL映射目录)
  options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
  </Directory>

  

  SSLCertificateFile /etc/pki/CA/httpd.crt          (指定公钥文件地址)

  SSLCertificateKeyFile /etc/pki/CA/private/private.key  (指定私钥文件地址)

  systemctl restart httpd  重启服务生效

  

(4)将CA服务器生成自签证书导入浏览器信任证书中

  导入后测试:

  https://www2.stux.com

  此处为火狐浏览器,测试成功

  

HTTP实战的更多相关文章

  1. SSH实战 · 唯唯乐购项目(上)

    前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...

  2. GitHub实战系列汇总篇

    基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...

  3. MySQL 系列(四)主从复制、备份恢复方案生产环境实战

    第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...

  4. Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现

    0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...

  5. 给缺少Python项目实战经验的人

    我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...

  6. asp.net core 实战之 redis 负载均衡和"高可用"实现

    1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...

  7. Linux实战教学笔记08:Linux 文件的属性(上半部分)

    第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...

  8. Linux实战教学笔记07:Linux系统目录结构介绍

    第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...

  9. Linux实战教学笔记06:Linux系统基础优化

    第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...

  10. Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)

    第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...

随机推荐

  1. 腾讯玄武实验室向(CNVD)提交了一个重大漏洞“BucketShock”

    导读 11 月 21 日,在小米 IoT 安全峰会上,腾讯安全玄武实验室负责人于旸(花名:TK 教主)在演讲中透露,腾讯玄武实验室最近向国家信息安全漏洞共享平台(CNVD)提交了一个重大漏洞“Buck ...

  2. springboot 不停服动态更新定时任务时间(转)

    转 https://blog.csdn.net/u012129558/article/details/80834303 Spring框架自3.0版本起,自带了任务调度功能,好比是一个轻量级的Quart ...

  3. Android游戏开发学习(5)--实现Button悬浮于与SurfaceView之上

    原文:http://daikainan.iteye.com/blog/1407355 实现Button悬浮于与SurfaceView之上实现 先看效果: 注意:你实现的SurfaceView和andr ...

  4. 从Facebook、苹果到外卖平台,“阴谋论”推动巨头企业不断蜕变

    不可否认的是,在互联网向前加速推进的过程中,巨头企业和独角兽扮演着重要角色.它们以多元创意和深厚技术.资金实力,一步步改造着大众的互联网生活.而在此前,人们对巨头企业.独角兽的态度是颇为依赖的.但自从 ...

  5. 设计模式课程 设计模式精讲 14-2 组合模式coding

    1 代码演练 1.1 代码演练1(组合模式1) 1.2 代码演练2(组合模式1之完善) 1 代码演练 1.1 代码演练1(组合模式1) 需求: 打印出木木网的课程结构, 我们用一个组建类作为接口,课程 ...

  6. LeetCode刷题--26.删除排序数组中的重复项(简单)

    题目描述 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度.不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成. 示例 ...

  7. ClientDataSet.locate报错问题

    数据集循环之后如果使用locate定位,需要首先将数据集first

  8. c++ 关键字this的用法简介

    前言: 自己在程序的时候一般不用this,但是在后来发现越来越有必要好好整理一下该知识点了,如有不足之处以及缺漏之处还望各位读者指出. 概念&实例 this 是 C++ 中的一个关键字,也是一 ...

  9. Wepy框架和mpVue框架的比较及使用mpVue框架需要注意的点

    Wepy框架 它是一款类Vue框架,在代码风格上借鉴了Vue,本身和Vue没有任何关系. mpVue框架 它是从整个Vue的核心代码上经过二次开发而形成的一个框架,相当于是给Vue本身赋能,增加了开发 ...

  10. C语言入门第四章

    =========C语言的输入与输出=========== %-9d : d:以十进制输出,9表示至少占用9个字符的宽度,宽度不足以空格补齐,-表示左对齐.综合起来,%-9d 表示以十进制输出,左对齐 ...