Linux入门攻坚——26、Web Service基础知识与httpd配置-2
http协议
URL:Uniform Resource Locator,统一资源定位符
URL方案:scheme,如http://,https://
服务器地址:IP:port
资源路径:
示例:http://www.test.com:80/bbs/index.php
基本语法:
<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<frag>
params:参数,如 http://www.test.com/bbs/hello;gender=f
query: 如 http://www.test.com/bbs/item.php?username=tom&title=abc
frag:如 http://www.test.com/bbs/item.php#title-2
相对URL、绝对URL
http协议:
版本:http/0.9、http/1.0、http/1.1、http/2.0
stateless:无状态的协议,服务器无法持续追踪访问者来源。
cookie机制,session机制
http事务:请求request 和 响应response
报文语法格式:
request报文:
<method> <request-URL> <version>
<headers>
<entity-body>
response报文:
<version> <status> <reason-phrase>
<headers>
<entity-body>
method:请求方法,标明客户端希望服务器对资源执行的动作,主要有GET、HEAD、POST等
version:版本,HTTP/<major>.<minor>
status:状态码,三位数字,五大类,1XX、2XX、3XX、4XX、5XX、
reason-phrase:状态码标记状态的简要描述
headers:每个请求或响应报文可包含任意个首部,首部名称:值
entity-body:请求体或响应体,请求或响应时附加的数据,
协议查看或分析的工具:tcpdump,tshark,wireshark
首部分类:
通用首部、请求首部、响应首部、实体首部、扩展首部
curl命令
curl是基于URL语法在命令行方式下工作的文件传输工具,支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议。curl支持HTTPS认证,并支持HTTP的PSOT、PUT等方法,FTP上传,Kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http代理服务器管道(proxy tunneling),还支持IPv6,socks5代理服务器,通过http代理服务器上传文件到FTP服务器等。
curl [options] [URL...]
curl常用选项:
-A/--user-agent <string> :设置用户代理发送给服务器
-basic:使用HTTP基本认证
--tcp-nodelay:使用TCP_NODELAY选项
-e/--referer <URL>:来源网址
--cacert <file> :CA证书(SSL)
--compressed:要求返回是压缩的格式
-H/--header <line>:自定义头信息传递给服务器
-I/--head :只显示响应报文首部信息
--limit-rate <rate>:设置传输速度
-u/--user <user[:password]> :设置服务器的用户和密码
-0/--http1.0:使用HTTP1.0
elinks工具:elinks -dump URL
使用mod_deflate模块压缩页面优化传输速度
SetOutputFilter DEFLATE
# mod_deflate configuration
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
#Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
#Netscape 4.x has some problems
BrowserMatch ^Mozilla/4 gzip-only-text/html
#Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape,but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
没有压缩前:
未启用压缩前,响应标头的Content-Length为20199,与使用wc计算的长度相同,没有Content-Encoding。
配置httpd,支持压缩:
httpd服务器配置压缩后,响应标头标志了Content-Encoding:gzip,表明使用了gzip压缩,Content-Length为6608,比原文的20199明显缩小。请求标头中Accept-Encoding表明浏览器支持gzip和deflate压缩。
使用curl测试:
HTTPS:
http over ssl = https 默认端口:443/tcp
ssl:v3,很少使用
tls:v1 ,现在互联网上一般都使用这个协议
https://
SSL会话的简单过程描述:
(1)客户端发送可供选择的加密方式,并向服务器请求证书;
(2)服务器端发送证书以及选定的加密方式给客户端
(3)客户端证书验证:
如果信任给其发证书的CA:
(a)验证证书来源的合法性:用CA的公钥解密证书上数字签名;
(b)验证证书的内容的合法性:完整性验证
(c)检查证书的有限期限;
(d)检查证书是否被吊销;
(e)证书中拥有者的名字,与访问的目标主机要一致;
(4)客户端生成临时会话密钥(对称密钥),并使用服务器端的公钥加密此数据发送给服务器,完成密钥交换;
(5)服务器用此密钥加密用户请求的资源,响应给客户端;
注意:SSL会话是基于IP地址创建,所以单IP的主机上,仅可以使用一个https虚拟主机;
配置httpd支持https:
1、为服务器申请数字证书;
测试:通过建立私有CA进行证书发放;
(1)创建私有CA
(2)在服务器创建证书签署请求
(3)CA签证
2、配置httpd支持使用ssl,及使用的证书:
# yum install -y mod_ssl
配置文件:/etc/httpd/conf.d/ssl.conf
DocumentRoot
ServerName
SSLCertificateFile
SSLCertificateKeyFile
3、测试基于https访问相应的主机:
# openssl s_client [ -connect host:port ] [ -cert filename ] [ -CApath directory ] [ -CAfile filename ]
实操:
1、自建CA,升级的openssl配置文件在/usr/local/openssl/ssl/openssl.conf,CA默认配置路径为/usr/local/etc/pki/CA
创建CA私钥:
CA自签证书生成:
Web服务器上生成证书签发请求文件:
CA签发证书:
发放证书到Web服务器上:
2、配置httpd支持ssl
确保mod_ssl模块安装加载
httpd -M | grep ssl
yum install mod_ssl -y
编辑/etc/httpd/conf.d/ssl.conf
3、测试,使用浏览器测试,可以访问到网页:https://192.168.138.138
openssl s_client未成功
4、将CA的自签证书导入系统,在浏览器中Internet选项——内容——证书——受信任的根证书颁发机构,导入CA证书。
(实验未成功,CA验证web.testcc.com证书未成功)
httpd自带的工具程序
htpasswd:basic认证基于文件实现时,用到的账号密码文件生成工具;
apachectl:httpd自带的服务控制脚本,支持start,stop等;
apxs:由httpd-devel包提供的,扩展httpd使用第三方模块的工具;
rotatelogs:日志滚动工具
suexec:访问某些有特殊权限配置的资源时,临时切换至指定用户运行;
ab:apache benchmark,压力测试工具
控制httpd服务的脚本,apachectl start | stop | restart | status | fullstatus
apxs,需要安装:yum install httpd-devel -y
apxs - APache eXtenSion tool
http压力测试工具:
ab、 webbench、 http_load
jmeter:
loadrunner:专业级商业压力测试工具
tcpcopy:网易出品
ab [OPTIONS] URL
-n:总的请求数
-c:模拟的并发数
-k:以持久连接模式测试
ulimit -n #:调整当前用户所同时打开的文件数;
相关文章:

Linux入门攻坚——26、Web Service基础知识与httpd配置-2
http协议 URL:Uniform Resource Locator,统一资源定位符 URL方案:scheme,如http://,https:// 服务器地址:IP:port 资源路径: 示例:http://www.test.com:80/bbs/…...

相由心生与事出反常必有妖
从端午节之日生病起,已就医三次,快半个月了。医检的结论是老病复发—— 上呼吸道感染 。原本并无大碍,加之“水不在深,有龙则灵”的张龙医生处方得当,现已病情好转。只是“800727”趁人之危,兴灾乐祸地欲从…...

微信小程序---支付
一、判断是否登录 如果没有登录,走前端登录流程,不再赘述 二、获取订单编号 跟自己的后端商议入参,然后获取订单编号 三、通过订单编号获取wx.requestPayment()需要的参数 获取订单编号再次请求后端接口,拿到wx.requestPayme…...

Git学习2 -- VSCode中的Git
看了下,主要的插件有3个。自带的Source Control。第1个是Gitlens,第2个是Git Graph。第三个还有个git history。 首先是Source Control。界面大概是这样的。 还是挺直观的。在第一栏source control,可以进行基本的git操作。主要的git操作都是…...

VC++支持断点续下或续传的功能
VC使用多线程和Socket实现断点续下 一、断点续下的基本原理: 1.断点续传的理解可以分为两部分:一部分是断点,一部分是续传。断点的由来是在下载过程中,将一个下载文件分成了多个部分,同时进行多个部分一起的下载&…...
机器学习数学原理专题——线性分类模型:损失函数推导新视角——交叉熵
目录 二、从回归到线性分类模型:分类 3.分类模型损失函数推导——极大似然估计法 (1)二分类损失函数——极大似然估计 (2)多分类损失函数——极大似然估计 4.模型损失函数推导新视角——交叉熵 (1&#x…...

windows和linux路径斜杆转换脚本,打开即用
前言: windows和linux的目录路径斜杆是相反的,在ssh或者其他什么工具在win和ubuntu传文件时候经常需要用到两边的路径,有这个工具就不用手动去修改斜杆反斜杠了。之前有个在线网站,后来挂了,就想着自己搞一个脚本来用。…...

在Android系统中,查看apk安装路径
在Android系统中,应用通常安装在内部存储的特定目录下。要找到已安装应用的路径,可以通过ADB(Android Debug Bridge)工具来查询。以下是一些步骤和命令,可以帮助你找到应用的安装路径: 使用pm list package…...

管理不到位,活该执行力差?狠抓这4点要素,强化执行力
管理不到位,活该执行力差?狠抓这4点要素,强化执行力 一:强化制度管理 1、权责分明,追责管理 要知道,规章制度其实就是一种“契约”。 在制定制度和规则的时候,民主一点,征求团队成员…...

应届毕业之本科简历制作
因为毕设以及编制岗位面试,最近好久没有更新了,刚好有同学问如何制作简历,我就准备将我自己制作简历的流程分享给各位,到此也算是一个小的结束,拿了工科学位证书毕业去做🐂🐎了。 简历主要包含内…...

SparkOnHive_列转行、行转列生产操作(透视和逆透视)
前言 行专列,列转行是数开不可避免的一步,尤其是在最初接触Hive的时候,看到什么炸裂函数,各种udf,有点发憷,无从下手,时常产生这t怎么搞,我不会啊? 好吧ÿ…...

【人机交互 复习】第2章 Hadoop
一、概念 1.Hadoop 是一个能够对大量数据进行分布式处理的软件框架,并 且是以一种可靠、高效、可伸缩的方式进行处理的, 2.特点: 高可靠性,高效性,高可扩展性,高容错性 运行在Linux平台上,支持…...

国产自研编程语言“仓颉”来了!
在 6.21 召开的华为开发者大会(HDC2024)上,华为自研的国产编程语言“仓颉”终于对外正式发布了! 随着万物互联以及智能时代的到来,软件的形态将发生巨大的变化。一方面,移动应用和移动互联网领域仍然强力驱动人机交互…...

Swarm 集群管理
Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具。它将 Docker 主机池转变为单个虚拟 Docker 主机。 Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机。 支持的工具包括但不限…...

从社交网络到元宇宙:Facebook的战略转型
随着科技的迅猛发展和数字化时代的深入,社交网络已不再局限于简单的信息交流和社交互动,而是逐步向更广阔、更深远的虚拟现实空间——元宇宙(Metaverse)转变。作为全球最大的社交网络平台之一,Facebook正在积极推动这一…...

程序猿大战Python——面向对象——继承进阶
方法重写 目标:掌握方法的重写。 当父类的同名方法达不到子类的要求,则可以在子类中对方法进行重写。语法: class 父类名(object):def 方法A(self):代码... class 子类名(父类名):def 方法A(self):代码... 例如,一起来完成&…...

【Linux基础】SSH登录
SSH简介 安全外壳协议(Secure Shell Protocol,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。 SSH通过在网络中建立安全隧道来实现SSH客户端与服务器之间的连接。 SSH最常见的用途是远程登…...

经典机器学习方法(7)—— 卷积神经网络CNN
参考:《动手学深度学习》第六章 卷积神经网络(convolutional neural network,CNN)是一类针对图像数据设计的神经网络,它充分利用了图像数据的特点,具有适合图像特征提取的归纳偏置,因而在图像相…...

经典面试题【作用域、闭包、变量提升】,带你深入理解掌握!
前言:哈喽,大家好,我是前端菜鸟的自我修养!今天给大家分享经典面试题【作用域、闭包、变量提升】,并提供具体代码帮助大家深入理解,彻底掌握!原创不易,如果能帮助到带大家࿰…...

Dockerfile实战
Dockerfile是用来快速创建自定义镜像的一种文本格式的配置文件,在持续集成和持续部署时,需要使用Dockerfile生成相关应用程序的镜像。 Dockerfile常用命令 FROM:继承基础镜像MAINTAINER:镜像制作作者的信息,已弃用&a…...

常用的开源数据集网站
Kaggle(https://www.kaggle.com/datasets):Kaggle 是一个著名的数据科学竞赛平台,也提供了大量的开放数据集供用户下载和使用。UCI Machine Learning Repository(https://archive.ics.uci.edu/datasets)&am…...

html文本被木马病毒植入vbs脚本
我在公司服务器上写了一个静态html,方便导航,结果没过多久发现html文件被修改了,在</html>标签后加了这些代码。 注:WriteData 的内容很长,被我删掉了很多,不然没法提交这个提问 <SCRIPT Lan…...

jsonl 文件介绍
jsonl文件介绍 什么是 jsonl 文件文件结构读取jsonl文件写入jsonl文件 什么是 jsonl 文件 jsonl(json lines)是一种文件格式,其中每一行都是一个单独的 json 对象。与常规的 json文件不同,jsonl文件在处理大量数据时具有优势&…...

反射机制详解
✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Java从入门到精通 ✨特色专栏ÿ…...
【数据库】七、数据库安全与保护
七、数据库安全与保护 文章目录 七、数据库安全与保护安全性访问控制数据库安全性控制用户标识和鉴别存取控制自主存取控制(DAC)存取控制方法:授权与回收GRANT授权REVOKE回收 强制存取控制(MAC) MySQL的安全设置用户管理1.创建登录用户2.修改用户密码3.修改用户名4.…...

卡尔曼滤波-剔除异常值的影响
二郎在看论文的时候,发现了一个针对卡尔曼滤波过程中,测量向量出现误差导致滤波发散的处理方法。 该方法也可以扩展到其他问题中使用,所以二郎在这里写一下。 论文原文:https://www.mdpi.com/1424-8220/20/17/4710 论文翻译对应…...

Java程序之动物声音“模拟器”
题目: 设计一个“动物模拟器”,希望模拟器可以模拟许多动物的叫声和行为,要求如下: 编写接口Animal,该接口有两个抽象方法cry()和getAnimalName(),即要求实现该接口的各种具体的动物类给出自己的叫声和种类…...

jieba中文分词器的使用
Jieba 是一个中文分词的第三方库,主要用于对中文文本进行分词。分词是将文本分割成一个个词语的过程,这在中文文本处理中尤为重要,因为中文不像英文那样有明显的空格来分隔词语。Jieba 的分词算法可以实现精确分词、全模式分词和搜索引擎模式…...

【杂记-浅谈OSPF协议中的RouterDeadInterval】
OSPF协议中的RouterDeadInterval 一、RouterDeadInterval概述二、设置RouterDeadInterval三、RouterDeadInterval的重要性 一、RouterDeadInterval概述 RouterDeadInterval,即路由器死区间隔,它涉及到路由器如何在广播网络上发现和维护邻居关系。Router…...

Django 模版变量
1,模版变量作用 模板变量使用“{{ 变量名 }}” 来表示模板变量前后可以有空格,模板变量名称,可以由数字,字母,下划线组成,不能包含空格模板变量还支持列表,字典,对象 2,…...