HTTP服务应用详解及相关配置

 第一部分  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>
相关文章
相关标签/搜索