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

  • 22
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值