httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。说到httpd,首先就要了解HTTP协议,HTTP协议(HyperText Transfer Protocol,超文本传...
httpd是Apache超文本传输协议(HTTP)服务器的主程序。被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池。说到httpd,首先就要了解HTTP协议,HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
以下是个人对WebServer之http和httpd基础知识的简单总结梳理:
-
WebServer 之http协议
http协议版本介绍
http/0.9:原型版本;
http/1.0:cache,MIME(multipupose internet Mail Extensions)
method:GET、POST、HEAD、PUT、DELETE、TRACE、OPTIONS、...
http/1.1:缓存功能大大增强
speedy:简写spdy
http/2.0
端口:80/tcp
https协议:443/tcp
基于TCP承载的HTTP协议:
http:hyper texttranfer protocol,超文本传输协议;应用层的的一种协议
作用对象是用超文本标记语言编译的文本,实现文档的检索
html:hyper text marklanguage,超文本标记语言;
格式:
<html>
<head>
<title></title>
</head>
<body>
</body>
</html>
http协议的工作模式:request/response
一次完整的http事务:请求<-->响应;
请求内容:主要就是web资源
web资源:
一个html文档;
一个图片;
一个mp3文件片断;
...
URL:Uniform ResourceLocator,资源标识,用于描述服务器上某特定资源
的位置;
URL组成:
URL scheme:协议,http,https, ftp,
服务器地址:IP:PORT
资源路径:/path/to/resource
DocumentRoot
http://www.magedu.com/images/logo.jpg
基本语法格式: <scheme>://<user>:<password>@<host>[:<port>]/<path>;<params>?<query>#<frag>
params:参数
http://www.magedu.com/admin/admin.php;username=admin
query:查询 http://www.magedu.com/admin/admin.php?logintime=12/07/2018
frag:在同一个页面文件中的偏移量
http://www.magedu.com/admin/readme.html#chart1
资源的种类:
静态资源:.jpg,.gif, .png, .html, .txt,
动态资源:
服务器端技术:.php,.jsp, ...
客户端技术:.js
一次完整的http请求的处理过程:
(1)建立或处理连接:接收请求或拒绝请求;
(2)接收请求:接收客户端发来的具体请求报文;
(3)处理请求:对请求报文进行解析;
(4)访问资源:对本地访问而言,通过存储IO获取用户请求的资源;
(5)构建响应报文:
(6)发送响应报文:
(7)记录于日志中:
http协议报文格式:
通用格式:
起始行
Name:Value
Name:Value
...
主体
request :
<method><request-URL> <version>
<headers>
<body>
response:
<version><status> <reason-phrase>
<headers>
<body>
格式中的关键字段说明:
method:请求方法,标明客户端希望服务器对资源执行的动作
GET、HEAD、POST
WebDAV:PUT、DELETE
OPTIONS、TRACE
注:POST:向服务器端提交表单等数据
HEAD:只从服务器端获取响应报文的首部
PUT:上传资源 DocumentRoot
DELETE:删除资源 DocumentRoot
WebDAV机制:web分布式版本协作功能,只有打开的这个功能才能PUT
和DELETE
OPTIONS:请求服务器返回给我列出某一资源所支持所有的请求方法
TRACE:追踪从客户端到服务器端所经过的代理服务器(web网关)
协议查看或分析工具:tcpdump,wireshark, tshark, ...
status:状态码,statuscode
三位数字,1xx,2xx, ..., 5xx
标明请求处理过程的结果状态;
1xx:100-101, 信息提示;
2xx:200-206,成功类的响应码,例如200;
3xx:300-305,重定向类的响应码,例如301(永久重定向), 302(临时重定
向), 304(资源没修改,对客户端缓存而言)等;
4xx:400-415, 错误类信息,客户端错误,例如 401(认证质询), 404(访问
资源不存在), 403(无权限)等;
5xx:500-505, 服务器端错误,例如500(服务器内部错误),502(bad gateway)
等;
headers:请求/响应报文的首部
媒体格式:通过MIME实现
媒体格式标记形式:
major/minor
images/jpeg
text/html
text/plaintext
text/xml
...
格式:
Name:Value
首部分类:
通用首部
请求首部
响应首部
实体首部
扩展首部
通用首部:请求、响应报文均可使用;
Date:报文的创建时间;
Connction:连接状态,keep-alive,close;
Via:经由,报文传输经由的代理节点;
Cache-Control:缓存控制
Pragma:
请求首部:
Accept:可接受的媒介类型;MIME
Accept-Charset:接受字符集格式;
Accept-Encoding:接受的编码格式,deflate,gzip, ...
Accept-language:接受的语言;
Client-IP:
Host:请求的服务器名称和端口;
Referer:包含当前正在请求的资源的上一级资源;
User-Agent:客户端代理;
条件式请求首部:
Expect:期望返回的结果
If-Modified-Since:自从某时间是否发生了修改
If-Unmodified-Since:
If-None-Match:本地缓存中存储的文件的ETag的值是否与 服务器对 应的资源的不相同;
If-Match:
安全请求首部:
Authrization:向服务器发送账号和密码;
Cookie:向服务器端发送Cookie信息;
Cookie2:
示例:
Cookie:_gscu_2145764248=62963660up7ov365;sto-id- jzxx=GFBEKIMA;_trs_uv=l187_365_io2qnkij;_gscu_20
65735475=62963431dzqj3716
响应首部:
信息性首部:
Age:响应持续时长
Server:服务器端软件程序的名称、版本、...
协商首部:
Accept-Ranges:服务器端可接受的请求类型范围;
Vary:服务器查看的其它首部列表;
安全响应首部:
Set-Cookie:为客户端设定Cookie
Set-Cookie2:
WWW-Authenticat:认证质询
实体首部:
Allow:对此实体可使用的请求方法;
Location:资源的真正地址;
Content-Encoding:资源的编码格式
Content-language:资源的语言
Content-Length:资源的长度
Content-Location:资源的真正地址;
Content-Type:资源的类型
缓存相关:
Etag:code标记
Expires:实体过期时间;
Last-Modified: 最近一次的修改时间;
扩展首部:
X-Forwared-For:中间经由哪个服务器转发的
...
参开书籍:《HTTP权威指南》前四章;
并发响应模型:(对接收请求而言)
单进程I/O模型:串行响应;
多进程I/O模型:同时启动多个进程,每个进程响应一个请求;
复用的I/O模型:一个进程响应多个请求;
多线程模型:一个进程生成多个线程,每个线程响应一个请求;
事件驱动:一个进程直接响应多个请求;
复用的多进程I/O结构:启动m个进程,每个进程生成n个线程,每个
线程响应一个请求;
2. WebServer 之httpd程序
http 协议的实现
简单的基本 ht tp协议 服务器:也称纯静态 web 资源服务器
httpd (apache)
nginx
lighttpd
httpd的特性:
高度模块化:core +modules
modules支持:
DSO:Dynamic shared objects
支持动态装载和卸载;
MPM:multipathprocessing modules,多路处理模块
prefork:一个主进程,多个子进程;一个进程响应一个请求;
主进程:管理子进程;创建套接字;接收用户请求,并派发给某子进 程处理; ...
子进程:处理请求、响应请求;
worker:多进程多线程模型;一个线程响应一个请求;
主进程:管理子进程;创建套接字;接收用户请求,并派发给某子进 程处理; ...
子进程:负责管理线程;
线程:处理并响应请求;
event:事件驱动模型,多进程模型,每个进程响应多个请求;
主进程:管理子进程;创建套接字;接收用户请求,并派发给某子进 程处理; ...
子进程:处理并响应请求;
注: MPM :
httpd-2.2:event为测试模型;
CentOS6:MPM不支持DSO机制;
httpd-2.4:productionready;支持DSO机制;
CentOS7:MPM支持DSO机制,event为生产测试模式
httpd的版本:
httpd-1.3:官方已经停止维护;
httpd-2.0:
httpd-2.2:
httpd-2.4:
httpd.apache.org 官方站点
httpd的功能特性:
CGI:commongateway interface;
通用网络接口
虚拟主机:IP, PORT, HOSTNAME
反向代理
负载均衡: bytraffic,bybusiness, byreques
路径别名
丰富的用户认证机制
basic:
digest:
支持第三方模块
...
3. WebServer 之httpd部署与配置
httpd软件说明:
rpm包:CentOS base源;
编译安装:定制新功能,或其它原因;
CentOS 6:httpd-2.2
sysinit脚本:/etc/rc.d/init.d/httpd
安装:yuminstall httpd
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf 主配置文件
/etc/httpd/conf.d/*.conf
程序文件:
/usr/sbin/httpd
/usr/sbin/httpd.event
/usr/sbin/httpd.worker
注:这三个文件是编译到程序内核的,不支持DSO
日志文件:
/var/log/httpd
access_log:访问日志
error_log:错误日志
站点文档根目录:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
启动程序:
# servicehttpd start
chkconfig httpd on|off
# chkconfig --level235 httpd on
CentOS 7:httpd-2.4
Systemd Unit File:/usr/lib/systemd/system/httpd.service
安装:yuminstall httpd
程序环境:
配置文件:
/etc/httpd/conf/httpd.conf主配置文件
/etc/httpd/conf.modules.d/*.conf模块配置文件
/etc/httpd/conf.d/*.conf
程序文件:
/usr/sbin/httpd(工作方式文件)
MPM支持DSO机制,所以各为一个独立的模块;换模式只需要 更换模块即可
日志文件:
/var/log/httpd
access_log:访问日志
error_log:错误日志
站点文档根目录:
/var/www/html
模块文件路径:
/usr/lib64/httpd/modules
启动程序:
#systemctl start httpd
# systemctl enablehttpd.service
说明:以上内容由于时间有限匆忙写之,如有不清楚的内容还请海涵,不足之处,欢迎达人们批评指正。
本文出自 “坏人的IT世界” 博客,请务必保留此出处http://badm008.blog.51cto.com/4574140/1827182
原文:http://badm008.blog.51cto.com/4574140/1827182
本文标题为:WebServer 之http与httpd(apache)基础介绍
基础教程推荐
- Apache服务器配置攻略3 2022-09-01
- IIS 6 的 PHP 最佳配置方法 2022-09-01
- centos 7 安装及配置zabbix agent 2023-09-24
- linux下安装apache与php;Apache+PHP+MySQL配置攻略 2023-08-07
- 实战Nginx_取代Apache的高性能Web服务器 2023-09-29
- Apache Hudi数据布局黑科技降低一半查询时间 2022-10-06
- 服务器添加git钩子的步骤 2022-12-12
- nginx.conf(centos7 1.14)主配置文件修改 2023-09-23
- apache和nginx结合使用 2023-09-10
- linux之conda环境安装全过程 2023-07-11