第一部分 HTTP服务应用详解html
1、HTTP协议简介
linux
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从Web服务器传输超文本到本地浏览器的传送协议。它可使浏览器更加高效,使网络传输减小。它不只保证计算机正确快速地传输超文本文档,还肯定传输文档中的哪一部分,以及哪部份内容首先显示(如文本先于图形)等。浏览器
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。所以HTTP事务是由一个请求以及与其对应的响应报文组合起来的。缓存
HTTP协议的主要特色:安全
一、支持客户/服务器模式。bash
二、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。服务器
三、灵活:HTTP容许传输任意类型的数据对象。cookie
四、无链接:无链接的含义是限制每次链接只处理一个请求。网络
五、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。ide
2、HTTP服务的请求方法
GET:客户端从服务器获取资源,客户端发出的为完整的请求。
PUT:客户端向指定资源位置上传其最新内容。
DELETE:请求服务器删除Request-URI所标识的资源。
HEAD:客户端仅请求响应首部,则服务器只返回响应的首部。
POST:向指定资源提交数据进行处理请求,如提交表单。
OPTIONS:返回服务器针对特定资源所支持的HTTP请求方法。
TRACE:追踪一个资源请求中间所通过的代理。
3、HTTP协议的报文格式
一、起始行
二、首部:Host
三、主体
请求报文格式:Request
<method> <request-URL> <version> #请求方法 请求资源路径 所使用HTTP协议版本 <headers> #标题、头文件 <entity-boday> #实体主题
响应报文格式:Response
<version> <status> <reason-phrase> #版本 状态码 缘由管理 <headers> #标题、头文件 <entity-boday> #实体主题
4、HTTP的报文首部
一、通用首部:请求和相应都可使用
# connection 指定链接 # date 报文建立时间 # via 所通过的代理服务器
二、请求首部:只能用于请求
# Host 所请求的主机 # Referer 提供的包含当前请求URI文档的URL # Accept 接受的MIME类型 # Accept-Charset 接受的字符集 # Accept-Encoding 接受的编码 # Accept-Lanague 告诉服务器可以发送哪些语言
①条件请求首部
If-Modified-since 控制缓存
If-none-match
②安全请求首部
Authorization 客户端提供给服务器的认证信息
cookie(cookie2) 追踪用户链接
三、响应首部
# Age 响应时间 # Pulic 可存于公共缓存 # Server 服务器软件的名称及版本 # Vary 响应变化,会影响缓存 # Set-cookie(cookie2) 设定cookie
四、实体首部
# Allow 容许的请求方法 # Location 资源的实际位置 # Content_Lanague 主体内容的语言 # Content_Location 主体内容所处的位置 # Content_Type MIME 主体内容类型 # Etag 实体标记 # Expires 过时缓存 # Last-Mofified 上次修改时间
5、HTTP事务流程
① 创建链接
② 接受请求
③ 处理请求
④ 获取资源
⑤ 构建响应
⑥ 回送响应
⑦ 记录日志
第二部分 HTTP的相关配置
1、httpd软件的相关信息
一、服务脚本:/etc/rc.d/init.d/httpd
二、运行记录: /etc/httpd
三、配置文件
Ⅰ 主配置文件:/etc/httpd/conf/httpd.conf
Ⅱ 扩展配置文件:/etc/httpd/conf.d/*.conf
四、网页文件目录(DocumentRoot): /var/www/html
五、默认主页面:index.html
2、配置httpd的工做属性
一、指令不区分字符大小写,但通常状况下,单词的首字母大写;指令的值要区分大小写;有些指令能够重复使用屡次。
二、配置文件的构成
Ⅰ 主服务器不能和虚拟主机同时启用
Ⅱ 全局配置:对主服务器或虚拟机都有效,且有些功能是服务器自身的工做属性
Ⅲ 主服务器:主站的属性
Ⅳ 虚拟主机:虚拟主机及其属性定义
三、配置文件的语法测试
# service httpd configtest # httpd -t
大多数配置修改后,使用 service httpd reload 既能生效,而修改过监听的地址或端口的文件一般须要重启服务 service httpd restart 。
四、配置监听的端口和地址
# Listen [ IP: ] PORTsan
3、配置所选的MPM(多道处理模块)
一、prefork: 一个进程响应一个请求,linux中默认使用
Ⅰ 绑定特权端口
Ⅱ 派发和回收子进程
Ⅲ 读取并分析主配置文件
二、worker: 一个进程生成多个线程,一个线程响应一个请求
三、event: 测试模式 (勿使用)
四、配置使用编译进不一样的MPM的httpd 编辑配置文件 /etc/sysconfig/httpd
五、配置加载的模块
# LoadModule foo_module modules/mod_foo.sosui
4、配置服务器支持 keep-alived
# KeepAlive {on|off} on 空闲时使用,off 繁忙时使用 # KeepAlive TimeOut 最多容许链接时间 # MaxKeepAliveRequests 每次最大的资源请求次数
1)KeepAlive {on|off}
2)KeepAlive TimeOut
3)MaxKeepAliveRequests
5、配置站点的根目录
一、DocumentRoot ""
<Directory "FS_PATH">
</Directory>
# DocumentRoot " " 指定配置网页文件目录路径 # <Directory FileSystem_PATH> # </Directory >
Userdir:让每一个人都拥有我的站点:http://HOST/~username
UserDir Public_html
访问文件的配置文件及访问结果
二、<Location "URL">
</Location>
6、配置页面文件访问属性
# <Directory "FS_PATH"> # Options # Indexes 是否容许索引页面文件,建议关闭 # FollowSymLinks 是否容许跟随软链接 # ExecCGI 是否容许执行CGI脚本 # All # None
7、配置日志功能
一、日志有两类:访问日志和错误日志,而访问日志的格式须要自定义
二、错误日志
# ErrorLog "/path/to/error_log_file"
三、访问日志
# CustomLog /path/to/Custom_Log_File LOGTORMAT
8、配置访问控制
一、基于客户端(IP)的访问控制
order:定义allow和deny哪个为默认法则,写在后面的为默认法则,写在前面的指令没有显示定义的即受后面的指令控制。
# Order allow,deny # Allow from All
二、基于用户的访问控制
# DocumentRoot " " # <Directory "/path/to/DocumentRoot_SUBDIR"> # Options None # AllowOverride 是否容许覆盖 # AuthName "Realm" 用户名称 # AuthType Basic 认证类型 # AuthUserFile /path/to/passwords 用户帐号文件 # Require username 本帐号容许登陆的用户 # AuthGroupFile 用户组文件 # Require grpname 本帐号容许登陆的用户组 # </Directory>
9、配置虚拟主机
一、虚拟主机的类型
Ⅰ 基于端口的虚拟主机
Ⅱ 基于IP的虚拟主机
Ⅲ 基于主机名的虚拟主机
二、每一个虚拟主机的定义
# <VirtualHost IP:PORT> 指定虚拟主机的IP、端口 # ServerName 指定虚拟主机的主机名 # DocumenRoot " " 指定虚拟主机的站点路径 # </VirtualHost>
三、每一个虚拟主机的单独配置
<VirtualHost IP:80> ServerName Document " " CustomLog ErrorLog <Directory ""> Options None AllowOverride Authconfig AuthName " " AuthType Basic Require Vaild-user </Directory> ScriptAlias /cgi-bin/ Alias </VirtualHost>