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 #:调整当前用户所同时打开的文件数;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/31662.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios18计算器大更新使用指南,一招掌握新计算器使用技巧!

苹果推出iOS 18系统中&#xff0c;变化较大的之一就是以多年没有更新的计算器应用程序&#xff0c;新增了多个使用的功能&#xff0c;经过小编几天的使用&#xff0c;总结了几个iOS 18计算器的使用技巧和更新点分享给大家。 一、界面布局变化 与iOS 17相比&#xff0c;iOS18的…

Java学习笔记(二)变量原理、常用编码、类型转换

Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍Java变量原理、常用编码、类型转换详细使用以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获,友友们有任何问题可以在评论区留言 1、变量原理 1.1、变量的介绍 变量是程…

生成式AI时代,数据存储管理与成本如何不失控?

无数据&#xff0c;不AI。 由生成式AI掀起的这一次人工智能浪潮&#xff0c;对企业的产品、服务乃至商业模式都有着颠覆性的影响。因此&#xff0c;在多云、大数据、生成式AI等多元技术的驱动下&#xff0c;数据要素变得愈发重要的同时&#xff0c;企业对于数据存储的需求也在…

【Android14 ShellTransitions】(六)SyncGroup完成

这一节的内容在WMCore中&#xff0c;回想我们的场景&#xff0c;是在Launcher启动某一个App&#xff0c;那么参与动画的就是该App对应Task&#xff08;OPEN&#xff09;&#xff0c;以及Launcher App对应的Task&#xff08;TO_BACK&#xff09;。在确定了动画的参与者后&#x…

JVS开源底座与核心引擎的全方位探索,助力IT智能、高效、便捷的进化

引言 JVS产品的诞生背景 JVS是软开企服构建的一站式数字化的解决方案&#xff0c;产生的背景主要来源于如下几个方面&#xff1a; 企业数字化需求的增长&#xff1a;企业对IT建设的依赖程度越来越高&#xff0c;数字化、指标化的经营已经是很多企业的生存的基础和前提&#…

postman 工具下载安装使用教程_postman安装

本文讲解的是postman工具下载、Postman安装步骤、postman下载、postman安装教程。Postman是一款流行的API测试工具&#xff0c;它提供了一个用户友好的界面&#xff0c;用于发送和测试API请求&#xff0c;并且可以轻松地按需管理和组织请求。 这使得开发人员和测试人员能够更高…

CARIS HIPS and SIPSv12 是专业的多波束水深数据和声呐图像处理软件

CARIS HIPS and SIPS是专业的多波束水深数据和声呐图像处理软件。CARIS HIPS and SIPS适用于海洋应用需求。其可靠性和可用性对多波束水深数据处理和声呐图像都是很重要的。CARIS HIPS用于处理多波束水深数据&#xff0c;CARIS SIPS用于处理侧扫声呐图像和多波束背向散射回波数…

css文字镂空加描边

css文字镂空加描边 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>文字镂空</title><style>/* 公用样式 */html,body{width: 100%;height: 100%;position: relative;}/* html{overflow-y: scroll;} */*{margi…

【扫雷游戏】C语言实现

机器学习&#xff1a;Transformer框架理论详解和代码实现>Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属…

Ubuntu系统下修改网卡IP地址

Ubuntu系统下修改网卡IP地址 一、Ubuntu系统介绍1.1 Ubuntu简介1.2 Ubuntu网络配置方式 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、配置网卡IP地址4.1 备份网卡配置文件4.2 查看当前IP地址4.3 修改…

yolov8训练指标解读

Epoch 70/100&#xff1a;表示当前是第70个epoch&#xff0c;总共要训练100个epoch。 GPU_mem 0.879G&#xff1a;表示当前训练过程中使用的GPU内存为0.879 GB。 box_loss 1.057&#xff1a;表示当前epoch的边界框损失&#xff08;bounding box loss&#xff09;为1.057。 c…

Redis 持久化策略

Redis 提供了多种持久化机制&#xff0c;用于将数据保存到磁盘中&#xff0c;以防止因服务器重启或故障而导致的数据丢失。主要的持久化策略有两种&#xff1a;RDB (Redis Database) 和 AOF (Append Only File)&#xff0c;即当 Redis 服务器重新启动时&#xff0c;会读取相应的…

张量 Tensor学习总结

张量 Tensor 张量是一种多线性函数&#xff0c;用于表示矢量、标量和其他张量之间的线性关系&#xff0c;其在n维空间内有n^r个分量&#xff0c;每个分量都是坐标的函数。张量在坐标变换时也会按照某些规则作线性变换&#xff0c;是一种特殊的数据结构&#xff0c;在MindSpore…

工厂方法模式(大话设计模式)C/C++版本

工厂方法模式 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15926711.html #include <iostream> #include <memory> using namespace std;// 运算类 class Operation { private:double _NumA;double _NumB;public:void SetNumA(){cout << &q…

在Worpress增加网站的二级目录,并转向到站外网站

在WordPress中&#xff0c;你可以通过添加自定义重定向来实现将某个二级目录&#xff08;例如 www.example.com/subdir&#xff09;重定向到站外网站。可以通过以下几种方法来实现&#xff1a; 方法一&#xff1a;使用 .htaccess 文件 如果你的服务器使用Apache&#xff0c;你…

Android开发系列(五)Jetpack Compose之Icon Image

Icon是用于在界面上显示矢量图标的组件。它提供了很多内置的矢量图标&#xff0c;也支持自定义图标。要使用Icon组件&#xff0c;可以通过指定图标资源的名称或引用来创建一个Icon对象。例如&#xff0c;使用Icons.Default.Home来创建一个默认风格的首页图标。可以通过设置图标…

数据库讲解---(数据库保护)【下】

目录 一.并发控制 1.1并发操作引发的问题 1.1.1丢失修改 1.1.2不可重复读 1.1.3读”脏“数据 1.2调度及其可串行化 1.3事务的隔离性级别 1.4封锁技术【重要】 1.4.1排他锁 1.4.2共享锁 1.5封锁协议 1.5.1一级封锁协议 1.5.2二级封锁协议 1.5.3三级封锁协议 1.5.…

rk3588 cpu npu gpu 定频 变频

网上的资料 cpu: npu&#xff1a; GPU: DDR:

VMware安装及创建虚拟机

安装完成后&#xff0c;点击创建新的虚拟机 操作完成后就安装成功啦 &#xff0c;下个教程出虚拟机Linux和xshell的连接及可能出现的问题解决方案

Centos+Jenkins+Maven+Git 将生成的JAR部署到远程服务器上

1、登录 没有安装的参考下面的安装步骤先安装: Jenkins安装手册 输入账号、密码登录系统。 2、新建任务 2.1 创建页面 1,“输入一个任务名称”; 2,任务类型点击“构建一个maven项目”; 3,点击“确定”,此时,构建任务创建完成。 2.2 General 1、描述:输入要部署…