[原创]http协议及Apache服务
Posted 运维部落
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[原创]http协议及Apache服务相关的知识,希望对你有一定的参考价值。
http协议
什么是http?
http全称为超文件传输协议(Hyper text transfer protocol),其是一个应用层协议,基于tcp的80端口,一般使用ASCII编码传输。http协议是无状态的(stateless),即服务器无法追踪访问者来源. 其可以使用cokie机制来追踪同一个用户.
Cookie的追踪用户的原理
第一次方访问服务时,服务器发送一个cookie的小数据(随机数,用来标识客户端身份)
, 客户端会将其保存下来,随后 , 访问同一个站点时,会把应用于此站点的cookie提交给服务器,从而服务器就能识别客户端身份.
- 胖Cookie的实现原理
将用户会话及状态信息都保存至客户端本地,在请求数据时,将状态信息回传至服务器 - 瘦cookie + session的实现原理
将用户的状态信息都保存至服务器端,并与相应客户端的cookie令牌相对应,请求数据的时候,只是需向告诉服务器自己的cookie信息.
什么是超文本?
使用html(Hyper text mark language)编程语言编写,被称为文本标记语言。大致格式如下:
<html>
<head>
<title>Title</title>
</head>
<body>
<h1></h1>
<h2></h2>
<p>正文<a href="www.magedu.com/download.html">正文</a></p>
<h2></h2>
</body>
</html>
http协议版本
http 0.9
: 原型版本,功能简单,只添加了GET的方法http 1.0
:增加cache,MIME,Method,长连接等功能MIME
: multipurpose internet mail extesion(多用途邮件传输扩展协议,实现文本传输能添加非文本数据等附加),其原理为,将非文件数据在传输前重新编码为文件格式再传输,接收方能够用相反的方式将其重新还原的格式,同时能够调用相应的程序打开此文件常见的method
: 客户端请求数据的方法:GET
: 从服务器获取一个资源,通常不包含主体(entiy-body), 其为安全的方法POST
: 向服务器发送服务器要处理的数据,通常包含主体(entiy-body),通常向服务器发送HTML的表单数据.HEAD
: 只从服务器获取文档的响应首部,不包含entiy-body,其为安全的方法.PUT
: 将请求的主体部分直接存储在服务器上, 包含entiy-body,如果上传的文档已经存在,就用这个主体替代它.DELETE
: 请求删除服务器上指定URL的文档,通常服务器不会返回删除成功或是失败的消息通知.,不包含主体.TRACE
: 追踪请求到达服务器中间经过的代理服务器,由服务器发回一个trace响应,通常不包含主体OPTIONS
: 请求获得可以在服务器上执行那些方法,或者对某些特殊资源支持那些方法,通常不包含主体
扩展方法
:lock
: 允许用户锁定资源,可以在编辑某个资源的时候将其锁定,以防止别人同时对其进行修改mkcol
: 允许用户创建资源copy
: 便于在服务器上复制资源move
: 在服务器上移动资源
http 1.1
: 其增加了缓存功能,是目前被广泛使用的标准http 2.0
: 借用Google开放的html协议标准spdy,改进的版本
http的工作模式
http请求报文(http request):格式如下:
<method><request-URL><version> #获取方法 请求的资源 http协议版本 <headers> #http协议首部 #空白行 <entity-body> #报文主体 #空白行
http响应报文(http response)
<version><status><reason-phrase> #http版本 状态码 <headers> #响应报文首部 #空白行 <entity-body> #空白行
报文示例:
请求报文
GET / HTTP/1.1 Host:www.zhenping.me Connection:keep-aliv #连接方式为长连接 #空白行
响应报文
HTTP/1.1 200 OK X-powered-By:php/5.2.17 # 说明是一个PHP动态网页 Vary : Accept-Encodeing,cookie,User-Agent Cache-Control:max-age=3,must-revalidate Content-Encoding:gzip :网页压缩技术 Content-Length:6931 :网页长度 #空白行
手动模拟一个http请求会话:
telnet 172.16.36.60 80
Trying 172.16.36.60...
Connected to www.a.com.
Escape character is '^]'.
GET /index.html HTTP/1.1 #输入获取方法 请求的url 使用的协议
host:www.a.com #指定主机
#两次回车
HTTP/1.1 200 OK
Date: Tue, 12 Jan 2016 04:29:18 GMT
Server: Apache/2.2.15 (CentOS)
Last-Modified: Mon, 11 Jan 2016 11:41:51 GMT
ETag: "e000f-13-5290d6c437a91"
Accept-Ranges: bytes
Content-Length: 19
Connection: close
Content-Type: text/html; charset=UTF-8
<h1>www.a.com</h1>
Connection closed by foreign host.
http的状态码:
1XX
: 纯信息(100-101)100
: continue,说明收到了请求的初始部分,请客户端继续101
: switching protocols,说明服务器正在根据客户端的指定,将协议切换成update首部所列的协议
2XX
: 成功类的状态信息(200-206)200
: OK,请求没有问题,实体的主体部分包含了所请求的资源
3XX
: 重定向类的信息(300-305)301
: 永久重定向302
: 临时重定向304
: 内容没有发生改变,使用缓存(客户端发出了条件式请求,但服务器上的资源未发生改变,则通过)
4XX
: 客户端错误类的信息(400-415)400
: 用于告知客户端发送了一个错误的请求401
: unauthorized,未授权,访问前需要对用户认证403
: forbidden,请求服务器拒绝,服务器不想说明拒绝原因的时候使用404
: not found, 不存在的文件405
: Method not allowed , 发起的请求不支持的方法
5XX
: 服务器端错误类的信息500
: internal server error,服务器内部错误502
: bad gateway ,无法连接至其父网关504
: gateway timeout, 服务器连接超时
http报文首部
通用首部
Date
: 报文的创建时间connection
: 连接方式,如keepalive, close.Via
: 显示报文经过的中间节点(via本意为:经由)Cache-control
: 控制缓存pragma
: 跟缓存相关,为了兼容1.0版本MIME-version
: 给出发送端使用的MIME版本trailer
: 如果报文采用分块传输编码方式,就可以用这个首部列出位于报文拖挂部分Transfer-Encoding
: 告知接收端为了保证报文可选传输,对报文采用的编码方式Update
: 给出发送端可能想要”升级”使用新的版本或协议
请求首部
accept
: 通知服务器自己可接受的媒体类型Accept-charset
: 接收的字符集Accept-Encoding
: 接收内容编码格式(如压缩格式)Accept-Language
: 接收的语言Accept-Length
:实体主体数据包含了多少字节数据Accept-type
: 实体主体数据是什么类型From
: 提供了客户端用户的Email地址Client-ip
: 客户端IP地址Host
: 请求服务器名称和端口号Referer
: 包含了当前正在请求的资源上一级资源(由那跳转过来的)User-agent
:浏览器类型条件式请求首部
Expect
: 允许客户端列出某请求所要求的服务器行为If-modified-since
: 请求的数据如果晚于此修改时间,服务器将发回新文件If-unmodified-sinec
: 除非在某个指定日期之后资源没有被修改过, 否则就限制这个请求If-none-match
:本地缓存中存储的文档中的ETag标签是否与服务端文档的ETag不匹配(如果提供的实体标记与当前文档的实体标记不相符,就获取文档)If-Match
: 如果实体标记与文档当前实体标记相匹配,就获取这份文档If-range
: 允许对文档的某范围进行条件请求Range
: 如果服务器支持范围请求,就请求资源的指定范围
安全请求首部
authorization
: 向服务器发送认证信息,如帐号密码Cookie
: 客户端向服务器发送cookiecooki2
: cookie的版本2
代理请求首部
proxy-authorization
: 向代理服务器认证proxy-connection
: 与connection首部相同,但这个首部是在与代理建立连接时使用max-forward
: 在通往源服务器的路径上,将请求转发给其它代理网关的最大次数—-与trace方法一周使用
响应首部
信息性
Age
: 响应持续时长Server
: 服务器程序软件名称和版本date
: 服务器产生报文的时间Content-length
: 实体主体数据包含了多少字节数据Content-type
: 实体数据是什么类型Location
: 重定向的连接Public
: 服务器为其资源支持的请求方法列表Retry-after
: 如果资源不可用的话,就在此时间或日期重试Title
: 对HTML文档来说,就是HTML文档的源端给出标题Warning
: 对原因短语中更详细的一些警告报文
协商首部(某资源有多种表示方法时使用)
Accept-Ranges
: 服务器可接受的请求范围类型Vary
: 服务器查看的其它首部列表
安全响应
set-cookie
: 不是真正的安全首部,但隐含有安全功能,可以在客户端设置一个令牌,以便服务器对客户端进行标识set-cookie2
: 与set-cookie类似www-authenticate
: 来自服务器对客户端的质询认证表单Porxy-Authenticate
: 来自代理的对客户端的质询列表
实体首部
Allow
: 列出对些实体可使用的请求方法Location
: 告诉客户端真正的实体位于何处,重定向时使用
内容首部
Content-base
: 解析主体中相对URL时使用的基础URLContent-Encoding
: 内容的编码格式Content-Language
: 理解主体时最适宜使用的自然语言Content-length
: 主体的长度或尺寸Content-Location
: 实体真正所处位置Content-md5
: 主体的MD5校验和Content-range
: 在整个资源中些实体表示的字节范围Content-Type
: 主体的对象类型缓存相关
ETag
: 实体的扩展标签Expires
: 实体的过期时间,实体不再有效,要从原始的源端再次获取此实体的日期和时间Last-Modified
: 最后一次修改时间和日期
扩展首部
什么是keep-alive?
其被称之为长连接,由于http基于tcp协议通信,每个资源的请求都需要建立一个会话的虚拟通道,如果对于并发大的服务器来讲,高频的TCP会议建立和拆除将消耗更多的系统开销,故长连接可以实现tcp协议通信建立后,在允许的机制下,进行多个资源请求获取,当服务端设定的条件达到时,将断开与客户端的TCP连接。
keep-alive的控制机制
- 空闲超时机制(httpd2.2版本以秒为单位,httpd2.4可以以毫秒为单位)
请求次数限制
注意:在高并发的应用场景中,空闲超时机制将会导致后面用户的请求进行挂起操作,以导致访问慢的情况。故时间需要测试而设定,并且对请求次数进行设定,这样可以避免高并发的情况中,用户的请求长时间连接,而新的用户请求一直得不到处理。 空闲超时机制在低并发的应用场景中, 可以加速用户的访问请求。
实现步骤
client发起请求并与server建立Tcp的连接,进行数据传输,当client的资源请求完成后,通知服务端断开连接,服务端并予ack报文,并不发送fin报文,此时连接将处理半连接状态,服务器会检查httpd的keep-alive参数设置的两个条件:1、如果半连接空闲时间超出keep-alive设定的值,将主动断开连接 ;2、当客户端请求的资源次数达到httpd的参数设置,也将会主动断开连接。
客户端浏览器加速访问的机制
- 1、多线程请求,同时打开不同的资源
- 2、静态内容进行缓存
web资源的类型:
1、静态资源
- 无需服务器做出额外处理,一般内容格式为:
- jpg,png,gif,html,txt,js,css,mp3,avi等
- 无需服务器做出额外处理,一般内容格式为:
2、动态资源
- 服务端需要通过执行程序做出处理,并发送给客户端程序的运行结果,一般格式为:
- php,jsp
- 服务端需要通过执行程序做出处理,并发送给客户端程序的运行结果,一般格式为:
服务端完整的HTTP请求处理过程
- 1、建立和处理连接(接收请求或拒绝请求)
- 2、接收请求:通过网络读取HTTP请求报文
- 3、处理请求:解析请求报文并做出相应的动作
- 4、访问资源:访问请求报文中相应的资源
- 5、构建响应报文:使用正确的首部生成http响应报文
- 6、发送响应:向客户端发送生成的响应报文
- 7、记录日志:当已经完成的http事务记录进日志文件
HTTP的访问归类:
- 1、PV(Page view),页面的访问量,其在访问日志中的URL字段中第二个位置
- 2、UV(User view),用户的访问量,以IP访问数量来统计,其在访问日志中的第一个字段
服务端接收请求的模型
1、单进程I/O模型
启动一个进程处理用户请求,这意味着,一次只能处理一个请求,多个请求被串形响应
2、多进程I/O模型
每个请求都有一个独立的进程来响应,并行启动多个进程,每个进程响应一个请求
3、复用的I/O模型(必须要有多路IO管理机制)
- 1、多线程模式
- 一个进程生成N个线程,一个线程处理一个请求,其能生成的线程也是有限定的
- 2、事件驱动
- 一个进程直接响应N个请求,不用启动线程
4、利用的多进程I/O结构
启动M个进程,每个进程生成N个线程
- 一个进程直接响应N个请求,不用启动线程
http服务的实现软件
1、服务程序
httpd
nginx
lighttpd
thttpd
2、应用程序服务器
IIS
:(windwos .net)tomcat
:(apache,JSP,open source)websphere
: (IBM,JSP,commodity)weblogic
: (Oracle,JSP,commodity)JBoos
: (readhat,open source,commidity,核心是tomcat)
httpd服务程序
httpd简介
httpd是apache基金会(ASF:apache foundation)维护,其官网为httpd.apache.org,其基金会下有众多的著名软件。
http的版本
- httpd 1.3
- httpd 2.0
- httpd 2.2 (Centos 6平台的默认版本,其event模型仍为测试模型)
- httpd 2.4(Centos 7平台的默认版本,目前最新稳定版本,对event可用于生产环境中)
httpd的功能特性
- 1、CGI(Common Gateway Interface)
- 2、虚拟主机
IP
PORT
FQDN
- 3、支持反向代理
- 4、负载均衡
- 5、路径别名
- 6、丰富的用户认证机制
basic
:基本身份认证digest
: 摘要身份认证
- 7、支持第三方模块
- 8、高度模块化
- 9、动态模块加载(DSO,Dynamic shared object)
10、多路处理模块(MPM,Multipath processing modules)
prefork
: 多进程模型,每个进程响应一个请求,特性如下:工作模型
- a) 有一个主进程,其负责生成子进程及回收子进程,负责创建套接字,负责接收请求,并将其派发给某子进程处理
- b) 多个子进程,每个子进程处理一个请求,主进程不负责接收请求
- c) 会预先生成几个空置的进程,随时等待用于响应用户请求,其预先定义最大空闲和最小空闲
worker
: 多进程多线程模型,每个线程处理一个用户请求,特性如下:工作模型
- a) 有一个主进程,其负责生成子进程及回收子进程,负责创建套接字,负责接收请求,并将其派发给某子进程处理
- b) 每个子进程负责生成多个线程,每个线程负责响应用户请求
event
: 事件驱动机制,事件驱动模型,多进程模型,每个进程响应多个请求工作模型
- a) 有一个主进程,其负责生成子进程及回收子进程,负责创建套接字,负责接收请求,并将其派发给某子进程处理
- b) 子进程基于事件驱动机制直接响应多个请求
11、支持https协议,由
mod_ssl
模块提供- 12、支持用户认证
简单认证
摘要认证
基于表单认证
- 13、访问控制机制
基于IP或主机名的访问控制
基于每目录的访问控制
HTTPD的配置文件
1、httpd-2.2的版本(Centos 6)
- 配置文件
- /etc/httpd/conf/httpd.conf
- /etc/httpd/conf.d/*.conf
- 服务脚本
- /etc/rc.d/init.d/httpd
- 脚本配置文件
- /etc/sysconfig/httpd
- 主程序文件
- /usr/sbin/httpd
- /usr/sbin/httpd.event
- /usr/sbin/httpd/worker
- 日志文件
- /var/log/httpd/access_log
- /var/log/httpd/error_log
- 站点文档
- /var/www/html
- 模块文件路径
- /usr/lib64/httpd/modules
- 网站文件存放路径
- /var/www/html : 静态网页存放路径
- /var/www/cgi-bin : 动态网页存放路径
- 服务控制和启动
- service httpd on|off
- service {start|stop|restart|status|configtest|reload} httpd
2、httpd-2.4的版本(Centos 7)
- 配置文件
- /etc/httpd/conf/httpd.conf
- /etc/httpd/conf.d/*.conf
- /etc/httpd/conf.modules.d/*.conf : 模块相关的配置文件
- /usr/lib/systemd/system/httpd.service
- 主程序文件
- /usr/sbin/httpd : 2.4版本支持MPM的动态切换
- 日志文件
- /var/log/httpd/access_log
- /var/log/httpd/error_log
- 站点文档
- /var/www/html
- 模块文件路径
- /usr/lib64/httpd/modules
- 网站文件存放路径
- /var/www/html : 静态网页存放路径
- /var/www/cgi-bin : 动态网页存放路径
- 服务控制
- systemctl enable | disable httpd.service
- systemctl {start|stop|restart|status} httpd.service
HTTPD的进程
1、主进程的属主和属组
root:root
2、子进程或工作进程
apache:apache
HTTPD主配置文件
主配置文件的选项
- 1、全局配置段:影响apache的全局配置选项
- 2、中心主机配置段
- 3、虚拟主机配置段
主配置文件的格式
指令 + 值
- 指令:不区分大小写
- 值:在为路径时,是否区分大小写,取决于文件系统
常用配置选项
1、
修改监听的IP和PORT
格式:Listen [IP:] PORT
- a) 省略IP表示0.0.0.0
b) Listen指令可复现出现多次
Listen 80 Listen 8080 Listen 172.16.0.1:80
- c) 修改监听的socket,中有重启服务进程方可有效
2、持久连接功能
TCP连接建立后,每个资源获取完成后,不会断开连接,而是继续等待其它资源请求的进行,如何断开 ?
- a) 数量限制
b) 时间限制
KeepAlive on | off KeepAlive Timeout 15 MaxKeepAliveRequests 100
注意:副作用:对并发访问量较大的服务器,长连接机制会使得后续某些请求无法得到正常响应。折衷处理:使用较短的持久连接时长,以及较少的请求数量
3、MPM
修改2.2版本中的MPM机制,需要修改/etc/sysconfig/httpd中,启用HTTPD=/usr/sbin/httpd.worker或者指定其它的MPM模块,需要重启服务方可生效。prefork
的配置<IfModule prefork.c> StartServers 8 #启动时启动多少个进程 MinSpareServer 5 #最少空闲进程 MaxSpareServers 20 #最大空闲进程 ServerLimit 256 #最大启动多少个进程数,可大于maxclients MaxClients 256 #最大进程在线数量,不能大于serverlimit MaxRequestsPerChild 4000 #表示每个进程最多处理多少个请求,达到数量时由主进程销毁 </IfModule>
worker
的配置<IfModule worker.c> StartServers 4 MaxClients 300 MinSpareThreads 25 MaxSpareThreads 75 ThreadsPerChild 25 MaxRequestsPerChild 0 #0表示不启用 </IfModule>
4、配置指定实现模块加载
1、定义格式
LoadModule <mod_name> <mode_path>
2、使用相对路径,是相对于serverroot,默认为/etc/httpd
5、定义中心主机”Main server”的文档页面路径
1、定义格式
DocumentRoot "/var/www/html"
- 2、文档路径映射
- DocumentRoot指向的路径为URL路径的起始位置,相当于站点URL的根路径
6、站点访问控制定义方法
1、基于文件系统路径
方法一: <Directory "/PATH"> ...... </Directory> 方法二 <File "/PATH"> ...... </File> 方法二 <FileMatch "PATTERN"> ..... </FileMatch> #以模式匹配,需要启动正则表达式引擎,其效率低
2、基于URL
方法一: <Location "/"> ...... </Location> 方法二: <LocationMatch "/"> ...... </LocationMatch>
7、站点访问控制设定
1、基于IP方式实现控制
<Location /server-status> SetHandler server-status order deny,allow #定义生效次序 deny from all allow from 172.16.249.148 </Location> ##注意: 来源地址定义格式,可如下方式: 172.16 172.16.0.0 172.16.0.0/16 172.16.0.0/255.255.255.0
2、基于用户名和密码方式实现控制
<Directory "/www/b.com/htdocs"> Options None #可以定义多个,使用空格分开,None表示不定义 AllowOverride None #是否允许覆盖,覆盖面面order或者auth的认证,None表示不定义 AuthType Basic #认证类型 AuthName "Please Enter your username and password." #认证提示 AuthUserFile "/etc/httpd/conf/.htpass" #用户和密码存放路径 AuthGroupFile "/etc/httpd/conf/.htpass_group" #用户组的定义存放路径 Require group mygrp #允许mygrp组中的用户 或者只是定义用户,不定义组 AuthType Basic #认证类型 AuthName "Please Enter your username and password." #认证提示 AuthUserFile "/etc/httpd/conf/.htpass" #用户和密码存放路径 Require user zhenping #只允许用户zhenping登录,多个用户可以使用空格隔开 </Directory> 注意1:如果需要定义的所有用户都可以访问,需使用: Require valid-user 注意2:认证方式有两种: basic :明文 digest : 消息摘要认证 注意3:用户及密码的存储方式 文本文件 SQL数据库 Ldap目录服务 注意4:组文件定义格式 GROUP_NAME: group1 group2 注意4:用户名的密码需要使用htpasswd工具来创建,如下格式: htpasswd -c -m /etc/httpd/conf/.htpasswd tom Options: -c : 自动创建加密文件,一般用于第一次 -D : 删除用户 -m : 以MD5格式加密 -s : 以sha格式加密
* Options的各参数说明:
Index:定义索引,索引是指列出目录下所有的文件
None:不支持任何选项
FollowSymLinks:跟随符号连接,意味访问符号连接所指向的文件,会降低服务器的性能
Includes:允许执行服务器端包含(SSI),此方式不安全
SymLinksifOwnerMatch:允许执行符号连接,但属主必须与执行httpd进程的属主相匹配,不 开放
ExecCGI:允许执行CGI脚本
MultiViews:判断客户端使用的语言,并显示相应语言的网页,一般比较消耗资源
ALL:启用所有选项
8、定义站点主页
1、定义格式
DocumentRoot "/www/htdocs"
- 2、未定义的错误提示
- 404 Not Found错误
- 显示目录下的所有文件
9、定义路径别名
1、定义格式
alias /URL/ “/PATH”
alias /download/ "/rpms/pub" #后者为文件系统路径
10、定义默认字符集
1、定义格式
AddDefaultCharset UTF8 可支持的中文字符集:GBK,GB2312,GB18030
11、日志设定
1、错误日志的定义格式
ErroLog logs/error_log LogLevel warn ##日志等级为: Debug Info notice Warn Error Crit Alert Emerg
2、访问日志的定义格式
CustomLog logs/access_log combined #combined为日志格式 LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common LogFormat "%{Referer}i -> %U" referer LogFormat "%{User-agent}i" agent
#其宏定义的格式:
%h :客户端的IP地址
%l :远程登陆的用户名,通常为一个减号“-”
%u :远程登陆的用户(from auth),非登陆访问时,其为一个减号
%t :服务器收到请求的时间,standerd english time
%r :First line of request,表示请求报文的首先,记录了此次请求的:方法,URL,协议版本
%>s :响应的状态码
%b :响应报文的大小,单位字节,不包含http请求首部
%{Referer}i : 请求报文中首部"referer"的值,即从那个页面中的超连接跳转至当前页面
%{User-Agent}i : 请求报文中首部"User-Agent"的值,即发出请求的应用程序,浏览器类型
12、虚拟主机(如果需要虚拟主机的方式,需先注释中心主机的DocumentRoot)
1、实现方式
基于IP
<VirtualHost 192.168.0.1:80> ...... </VirtualHost> <VirtualHost 192.168.0.2:80> ...... </VirtualHost>
基于PORT
<VirtualHost 192.168.0.1:80> ...... </VirtualHost> <VirtualHost 192.168.0.1:8080 ...... </VirtualHost>
基于FQDN
<VirtualHost 192.168.0.1:80> servername www.a.com ...... </VirtualHost> <VirtualHost 192.168.0.1:80> servername www.b.com ..... </VirtualHost> 注意:如果需要在2.2版本及以下,需要使用NameVirtualHost IP:PORT来先定义,2.4以后版本不需要
13、status页面
1、启用加载对应的模块 LoadModules status_module modules/mod_status.so 启用server-status容器选项 <Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from .example.com </Location> 访问 www.a.com/server-status
14、域名别名
1、定义格式
serveralias www.b.com www.a.com #将www.b.com定义为www.a.com
httpd的子命令
httpd -l
: 查看httpd所支持的MPM类型httpd -t
: 测试主配置文件是否有语法错误httpd -M
: 查看http的加载模块
15 Curl命令
Curl是基于URL语法在命令行下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOPHER,TELNET,DICT,FILE及LDAP等协议,curl支持https认证,并且支持HTTP的POST,PUT等方法,FTP上传,kerberos认证,HTTP上传,代理服务器,cookies,用户名/密码认证,下载文件断点续传,上载文件断点续传,http代理服务器管道(proxy tunneling),甚至它还支持IPv6,socket5代理服务器,通过http代理服务器上传文件到FTP服务器等,功能十分强大.
用法:
- curl [options] [URL….]
常用选项
-A / --user-agent <string>
: 设置用户代理发送给服务器--base
: 使用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
16 apache的用户及组
指定以哪个用户的身份运行httpd服务进程
- user apache
- group apache
如果需要使用root权限执行操作时,需要使用SUexec命令调用相关操作
17 使用mod_deflate模块压缩页面优化传输速度
- 适用场景
- 1) 节约带宽,额外消耗CPU,同时可能有些老浏览器不支持
- 2) 压缩适于压缩的资源,例如文本文件
####设置一个过滤器,名称为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
号外号外:
以上是今天为大家带来的内容,如果有任何问题,大家也可以添加以下QQ群参与问题的讨论。
Ansible中文权威群:372011984(已满)
AWK&SED企业实战: 260039357
docker企业架构实践:491533668
Jumpserver交流群 :399218702
Ansible中文权威-2号群:486022616
关于我们:
以上是关于[原创]http协议及Apache服务的主要内容,如果未能解决你的问题,请参考以下文章