HTTP实战
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实战的更多相关文章
- SSH实战 · 唯唯乐购项目(上)
前台需求分析 一:用户模块 注册 前台JS校验 使用AJAX完成对用户名(邮箱)的异步校验 后台Struts2校验 验证码 发送激活邮件 将用户信息存入到数据库 激活 点击激活邮件中的链接完成激活 根 ...
- GitHub实战系列汇总篇
基础: 1.GitHub实战系列~1.环境部署+创建第一个文件 2015-12-9 http://www.cnblogs.com/dunitian/p/5034624.html 2.GitHub实战系 ...
- MySQL 系列(四)主从复制、备份恢复方案生产环境实战
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- Asp.Net Core 项目实战之权限管理系统(4) 依赖注入、仓储、服务的多项目分层实现
0 Asp.Net Core 项目实战之权限管理系统(0) 无中生有 1 Asp.Net Core 项目实战之权限管理系统(1) 使用AdminLTE搭建前端 2 Asp.Net Core 项目实战之 ...
- 给缺少Python项目实战经验的人
我们在学习过程中最容易犯的一个错误就是:看的多动手的少,特别是对于一些项目的开发学习就更少了! 没有一个完整的项目开发过程,是不会对整个开发流程以及理论知识有牢固的认知的,对于怎样将所学的理论知识应用 ...
- asp.net core 实战之 redis 负载均衡和"高可用"实现
1.概述 分布式系统缓存已经变得不可或缺,本文主要阐述如何实现redis主从复制集群的负载均衡,以及 redis的"高可用"实现, 呵呵双引号的"高可用"并不是 ...
- Linux实战教学笔记08:Linux 文件的属性(上半部分)
第八节 Linux 文件的属性(上半部分) 标签(空格分隔):Linux实战教学笔记 第1章 Linux中的文件 1.1 文件属性概述(ls -lhi) linux里一切皆文件 Linux系统中的文件 ...
- Linux实战教学笔记07:Linux系统目录结构介绍
第七节 Linux系统目录结构介绍 标签(空格分隔):Linux实战教学笔记 第1章 前言 windows目录结构 C:\windows D:\Program Files E:\你懂的\精品 F:\你 ...
- Linux实战教学笔记06:Linux系统基础优化
第六节 Linux系统基础优化 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 基础环境 第2章 使用网易163镜像做yum源 默认国外的yum源速度很慢,所以换成国内的. 第一步:先备份 ...
- Linux实战教学笔记05:远程SSH连接服务与基本排错(新手扫盲篇)
第五节 远程SSH连接服务与基本排错 标签(空格分隔):Linux实战教学笔记-陈思齐 第1章 远程连接LInux系统管理 1.1 为什么要远程连接Linux系统 在实际的工作场景中,虚拟机界面或物理 ...
随机推荐
- 十二 Spring的AOP开发入门,整合Junit单元测试(AspectJ的XML方式)
创建web项目,引入jar包 引入Spring配置文件
- Servlet 学习(五)
重定向redirect 1.使用方法 response.sendRedirect("/应用名/ 访问资源名"); response.sendRedirect(request.get ...
- 【转】IntelliJ IDEA 仿照vs2017快捷键设置,以及字体颜色设置
因后期工作需要使用java技术栈,所以近期抽空下载了intelliJ IDEA工具,但是作为一个Net开发者,在使用了vs以后,感觉在使用别的开发工具感觉就是没法和vs相比,毕竟vs被称为宇宙最强id ...
- Java入门程序“hello,world!”
1.程序开发步骤说明 开发环境已经搭建完毕,可以开发我们第一个Java程序了. Java程序开发三步骤:编写.编译.运行.(图片介绍) 2.编写Java程序 新建一个普通的记事本,给其命名为Hel ...
- 109、Java中String类之截取部分子字符串
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- SLT学习——leafes tree扩展 【文艺平衡树】
这是一个全新的数据结构 md,别看这篇文章了,这篇已经废了. 百折不饶,再交一次,更新复杂度证明 这里是HYF,蒟蒻一只,最近因某些原因开始学数据结构了,然后就写了这篇题解. 下面给大家介绍一个全新的 ...
- Java Hashtable遍历与方法使用
参考文档 我参考了Java 集合系列11之 Hashtable详细介绍(源码解析)和使用示例,阅读了jdk 1.8的源码 Hashtable的继承关系 Hashtable继承了Dictionary类, ...
- SDL 显示汉字
#include "stdafx.h" #pragma comment(lib,"SDL.lib") #pragma comment(lib,"SDL ...
- 树莓派frp添加为服务管理
1.下载frp https://github.com/fatedier/frp/releases 我是1代的B+,下载arm版的,新的可以用arm64的 frp_0.29.0_linux_arm.ta ...
- GeoDa绘制疫情地图
刚学习GeoDa,菜鸟,目前还不能在地图上显示省市名称,求教. 看到丁香医生发布的疫情地图,我也尝试做一下,不过我的shp文件上只有中国大陆的31个省市. 数据来源于丁香医生,截至时间为 2020.1 ...