码迷,mamicode.com
首页 > Web开发 > 详细

HTTP服务

时间:2015-06-12 22:24:33      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:internet   互联网   protocol   服务器   实验室   

HTTP:HyperText Transfer Protocol,超文件传输协议

上世纪90年代初,诞生于量子实验室

    http/09版本:仅支持纯文件(超连接),ASCII

    HTML:编写超文本的语言  ,HyperText mark Language

URI:统一资源标识符,Uniform Resource Indentifier 

    URL:是URI的一个子集,Uniform resource locater


HTTP资源获取的方法:(method)

    1、GET(0.9版本)

    2、PUT,POST DELETE(1.0版本)HEAD(只返回首部,不返回主体)trace options connection


MIME机制:Multipurpose Internet Mail extension,多用途互联网邮件扩展

    MIME:将非文件数据在传输前重新编码为文件格式再传输。接收方能够用相反的方式将其重新还原为        原来的格式,还能够调用相应的程序来打开此文件


SMTP:Simple mail transmission protocol


动态网页:在服务器端存储的文档非HTML格式,而是编程语言开发的脚本,脚本接受参数之后在服务器运行一次,运行完成后会生成HTML格式文档,把生成的文档发给客户端


HTTP客户端数据报文

    1、包含IP协议信息

        source IP

        destination IP

    2、TCP协议信息

        source port

        destination port

    3、http协议信息

        GET /file.html

        Host:www.btsbox.com(WEB虚拟主机机制,所以有添加此信息)


请求报文语法

<method> <request-URL><version>   # 获得方法 请求的资源 http版本

<headers> #http协议首部

              #空白行

<entity-body> #报文主体

              #空白行

响应报文语法

<version> <status><reason-phrase>  #http版本  状态码 成功或失败的解释

<headers>    #响应报文首部

             #空白行

<entity-body>

             #空白行


状态代码:

    1XX:纯信息

    2XX:成功类的状态信息

    3XX:重定向类的信息(301永久重定向,302临时重定向,304内容没有发生改变,使用本地缓存)

    4XX:客户端错误类的信息(404不存在的文件)

    5XX:服务器端错误类的信息


报文示例

请求报文:

GET / HTTP/1.1          #说明协议 和请求的路径 "/"一般为主页

Host:www.mageedua.com   #报文首部都是以HOST:这类格式出现,既以这类格式出现的,都为报文首部

Connection:keep-aliv    #连接方式为长连接,不断开连接

                        #空白行

响应报文:

HTTP/1.1 200 OK   #返回成功状态码

X-powered-By:PHP/5.2.17 #说明是一个PHP动态网页

Vary:Accep-Encodeing,cookie,User-Agent

Cache-Control:max-age=3,must-revalidate

Content-Encoding:gzip   #网页压缩技术

Content-Length:6931     #网页长度 

                        #空白行


上面两个报文的第一行通常称作报文“起始行(start line)",后面的标签格式的内容称作首部域(Header field),每个首部域都由名称(name)和值(value)组成,中间用逗号分隔。另外,响应报文通常还有一个称作body的信息主体,即响应给客户端的内容


web服务器的主要操作

1、建立连接-->接受或拒绝客户端连接请求

2、接收请求-->通过网络读取HTTP请求报文

3、处理请求-->解析请求报文并做出相应的动作

4、访问资源-->访问请求报文中相应的资源

5、构建响应-->使用正确的首部生成http响应报文

6、发送响应-->向客户端发送生成的响应报文

7、记录日志--当已经完成的http事务记录进日志文件


http/1.1

    增强了缓存功能、

    引入了长连接机制


长连接机制:

    空闲超时

    请求次数限制

WEB服务器模型:

单进程/单线程服务器模型

多进程/多线程服务器模型

事件驱动、状态通知服务器模型

多进程、响应多请求服务器模型

MPM:Multi path Modules (多道处理模块)

    prefork(一个请求用一个进程响应)

    work(一个请求用一个线程响应,启动多个进程,每个进程生成多个线程)

    event(一个进程响应多个请求,基于事件处理模型)

    winnt

Server soft:

    httpd

    IIS

    nginx

    lighttpd

    thttpd


应用程序服务器

    IIS

    tomcat(apache,JSP,open source)

    websphere(IBM,JSP,commodity)

    weblogic(Oracle,JSP,commodity)

    JBoss(Readhat,open source,commodity,核心是tomcat)


Apache

ASF:Apache software Foundation


httpd:

    web server, Open source

    version: 2.2 2.4


httpd特性:

    事先创建进程

    按需维持适当的进程

    模块设计,核心比较小,各种功能都通过模块添加(包括PHP)

        支持运行时配置,支持单独编译模块

    支持多种方式的虚拟主机配置

         虚拟主机:

                基于IP的虚拟主机

                基于端口的虚拟主机

                基于域名的虚拟主机

    支持https协议(mod_ssl)

    支持用户认证

        简单认证

        摘要认证

        基于表单认证

    访问控制机制

        基于IP或主机名的访问控制机制 

        基于每目录的访问控制

    支持URL重写


httpd: SELinux(事先让其处于permssive,disabled)

httpd进程:

    /usr/sbin/httpd(MPM:prefork)

        httpd: root,root (master process)

        httpd: apache,apache (worker process)

    /etc/rc.d/init.d/httpd (服务脚本)

httpd 端口:

    80/tcp, 443/tcp

httpd工作目录

    /etc/httpd:工作根目录,相当于程序安装目录

    /etc/httpd/conf:配置文件目录

        主配置文件:httpd.conf

        /etc/httpd/conf.d/*.conf :是对httpd.conf的分割

    /etc/httpd/moduless:模块目录

    /etc/httpd/logs --> /var/log/httpd:日志目录

        日志文件有两类:访问日志access_log,错误日志:err_log

    /var/www:网站存储位置

        html:静态网站存储位置

        cgi-bin:动态网站存储位置

        cgi:可以让httpd调用其他程序的一种机制,Common Gateway Interface

            cgi:Client-->httpd(index.cgi)-->Spwan process(Index.cgi)-->httpd-->Client

                http以index.cgi文件中指定的程序调用程序转换,如在bash脚本的 #!/bin/bash

            fastcgi:当用户请求动态网页,http将请求直接传递给cgi的子进程运行,这样可以实                        现静态网页服务与动态服务物理分离。

    /etc/httpd/conf/magic:定义如何识别MIME格式的文档

LAMP:apache+mysql+php


httpd的测试工具:

LoadRunner:专业级的HTTP性能测试工具


httpd的安装

[root@Centos6 dnstop-20140915]# yum install httpd


http.conf配置文件说明:

    格式:directive value,指令不区分大小写, value则可能要区分大小写

ServerTokens OS    #显示web的信息,可以接受多个参数
KeepAlive Off   #是否打开长连接
MaxKeepAliveRequests 100 #请求的资源数
KeepAliveTimeout 15  #长连接的超时时间
# prefork MPM  #定义MPM工作模型参数
# StartServers: number of server processes to start
# MinSpareServers: minimum number of server processes which are kept spare
# MaxSpareServers: maximum number of server processes which are kept spare
# ServerLimit: maximum value for MaxClients for the lifetime of the server
# MaxClients: maximum number of server processes allowed to start
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule prefork.c>   #perfork模型参数
StartServers       8    #启动进程数
MinSpareServers    5    #最小空闲进程
MaxSpareServers   20    #最大空闲进程
ServerLimit      256    #MaxClients的上限值,调整需先杀死所有进程,再设置启动,方生效
MaxClients       256    #最大客户端数
MaxRequestsPerChild  4000  #每个子进程最多响应多少用户请求
</IfModule>
# worker MPM        #worker工作模型
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<IfModule worker.c>
StartServers         4    #启动的进程数
MaxClients         300    #最大的客户端
MinSpareThreads     25    #最小线程数
MaxSpareThreads     75    #最大线程
ThreadsPerChild     25    #每个进程启动的线程数
MaxRequestsPerChild  0    #每个进程的最大请求
</IfModule>
#Listen 12.34.56.78:80
Listen 80    #监听所有IP的80端口
# Dynamic Shared Object (DSO) Support   #加载的模块
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule‘ lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l‘) do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
LoadModule authn_anon_module modules/mod_authn_anon.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_owner_module modules/mod_authz_owner.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so
LoadModule ldap_module modules/mod_ldap.so

# Load config files from the config directory "/etc/httpd/conf.d".
#
Include conf.d/*.conf    #加载的配置文件
 If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.  
#
# User/Group: The name (or #number) of the user/group to run httpd as.
#  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
#  . On HPUX you may not be able to use shared memory as nobody, and the
#    suggested workaround is to create a user www and use that user.
#  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
#  when the value of (unsigned)Group is above 60000; 
#  don‘t use Group #-1 on these systems!
#
User apache        #httpd启动的用户
Group apache        #httpd启动的组



修改HTTP运行模型

[root@Centos6 conf.d]# httpd -l   #查看httpd支持的模型
Compiled in modules:
  core.c
  prefork.c
  http_core.c
  mod_so.c
  [root@Centos6 conf.d]# httpd.event -l  
Compiled in modules:
  core.c
  event.c
  http_core.c
  mod_so.c
[root@Centos6 conf.d]# httpd.worker -l
Compiled in modules:
  core.c
  worker.c
  http_core.c
  mod_so.c
[root@Centos6 conf.d]# vim /etc/sysconfig/httpd   #启用worker模型
  HTTPD=/usr/sbin/httpd.worker







HTTP服务

标签:internet   互联网   protocol   服务器   实验室   

原文地址:http://leozhenping.blog.51cto.com/10043183/1661370

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!