HTTP报文:请求报文,响应报文

请求报文语法:
<method> <request-URL> <version>
<headers>

<entity-body>

响应报文语法:
<version> <status> <reason-phrase>
<headers>

<entity-body>

状态代码:
1xx: 纯信息
2xx: “成功”类的信息 (200, 201, 202)
3xx:重定向类的信息 (301, 302, 304)
4xx: 客户端错误类的信息 (404)
5xx:服务器端错误类的信息

请求报文:
GET / HTTP/1.1
Host: www.magedu.com
Connection: keep-alive

响应报文:
HTTP/1.1 200 OK
X-Powered-By: PHP/5.2.17
Vary: Accept-Encoding,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事务记录进日志文件;

5s: 10 image, 3 css, 5html
18资源

http, tcp: 三次握手,四次断开

http/1.1:
    增强了缓存的功能
    长连接

www.netcraft.com

Web服务器处理并发连接请求的架构方式

1、单线程web服务器(Single-threaded web servers)

此种架构方式中,web服务器一次处理一个请求,结束后读取并处理下一个请求。在某请求处理过程中,其它所有的请求将被忽略,因此,在并发请求较多的场景中将会出现严重的必能问题。

2、多进程/多线程web服务器

此种架构方式中,web服务器生成多个进程或线程并行处理多个用户请求,进程或线程可以按需或事先生成。有的web服务器应用程序为每个用户请求生成一个单独的进程或线程来进行响应,不过,一旦并发请求数量达到成千上万时,多个同时运行的进程或线程将会消耗大量的系统资源。

3、I/O多路复用web服务器

为了能够支持更多的并发用户请求,越来越多的web服务器正在采用多种复用的架构——同步监控所有的连接请求的活动状态,当一个连接的状态发生改变时(如数据准备完毕或发生某错误),将为其执行一系列特定操作;在操作完成后,此连接将重新变回暂时的稳定态并返回至打开的连接列表中,直到下一次的状态改变。由于其多路复用的特性,进程或线程不会被空闲的连接所占用,因而可以提供高效的工作模式。

4、多路复用多线程web服务器

将多进程和多路复用的功能结合起来形成的web服务器架构,其避免了让一个进程服务于过多的用户请求,并能充分利用多CPU主机所提供的计算能力。

代理

Web代理服务器工作于web客户端和web服务器之间,它负责接收来自于客户端的http请求,并将其转发至对应的服务;而后接收来自于服务端的响应,并将响应报文回送至客户端。

apache: 17,

NCSA, httpd

    A Patchy Server = apache

FSF: GNU, GPL
ASF: Apache Software Foundation
    web: httpd
         Tomcat
         Hadoop

    www.apache.org

web: http://httpd.apache.org

httpd:
    Web Server, Open Source
    2.2, 2.4, 2.0, 1.3

httpd:
    事先创建进程
    按需维持适当的进程
    模块块设计,核心比较小,各种功能都模块添加(包括php)
        支持运行配置,支持单独编译模块
    支持多种方式的虚拟主机配置
        Socket  IP:Port
        虚拟主机:
            基于IP的虚拟主机;
            基于端口的虚拟主机;
            基于域名的虚拟主机;

protocol://HOST:PORT/path/to/source

            Method URL version
            header

            body

            GET /download/linux.tar.bz2 HTTP/1.0
            Host: www.magedu.com
    支持https协议 (mod_ssl)
    支持用户认证
    支持基于IP或主机名的ACL
    支持每目录的访问控制
    支持URL重写,/image/a.jpeg, /bbs/images/abc.jpeg

RedHat(httpd):
    rpm包:
    源码编译

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

httpd:
    /usr/sbin/httpd(MPM: prefork)
        httpd: root, root (master process)
        httpd: apche, apache (worker process)
    /etc/rc.d/init.d/httpd
    Port: (80/tcp), (ssl: 443/tcp)
    /etc/httpd: 工作根目录,相当于程序安装目录
    /etc/httpd/conf: 配置文件目录
        主配置文件:httpd.conf
        /etc/httpd/conf.d/*.conf
    /etc/httpd/modules: 模块目录
    /etc/httpd/logs --> /var/log/httpd: 日志目录
        日志文件有两类:访问日志access_log,错误日志:err_log
    /var/www/
        html
        cgi-bin

        cgi: Common Gateway Interface
            Client --> httpd (index.cgi) --> Spawn Process (index.cgi) --> httpd --> Client
            perl, python, java, (Servlet, JSP), php

        fastcgi:

        程序:指令和数据
            数据,数据库服务

httpd:
    directive value
    指令不区分字符大小写
    value则根据需要有可能要区分

MPM: Multi Path Modules
    mpm_winnt
    prefork (一个请求用一个进程响应)
    worker  (一个请求用一个线程响应, (启动多个进程,每个进程生成多个线程))
    event   (一个进程处理多个请求)

URL路径跟本地文件系统路径不是一码事儿, URL是相对于DocumentRoot的路径而言的。

Options
    None: 不支持任何选项
    Indexes: 允许索引目录
    FollowSynLinks: 允许访问符号链接指向的原文件
    Includes: 允许执行服务端包含(SSI)
    ExecCGI: 允许运行CGI脚本
    All: 支持所有选项

Order:用于定义基于主机的访问功能的,IP,网络地址或主机定义访问控制机制
    Order allow,deny
    allow from
    deny from

192.168.0.0/24

地址的表示方式:
    IP
    network/netmask
    HOSTNAME: www.a.com
    DOMAINNAME: magedu.com
    Partial IP: 172.16, 172.16.0.0/16

Order deny,allow
Deny from 192.168.0.0/24

    192.168.0.1, 172.16.100.177

elinks http://172.16.100.1
    -dump
    -source

AuthType Basic
AuthName "Restricted Files"
AuthUserFile /usr/local/apache/passwd/passwords
Require user marion

Group File Syntax:
GroupName: rbowen dpitts sungo rshersey

AuthType Basic
AuthName "By Invitation Only"
# Optional line:
AuthBasicProvider file
AuthUserFile /usr/local/apache/passwd/passwords
AuthGroupFile /usr/local/apache/passwd/groups
Require group GroupName

Require valid-user

<Directory /www/docs/private>
AuthName "Private"
AuthType Basic
AuthBasicProvider dbm
AuthDBMUserFile /www/passwords/passwd.dbm
Require valid-user
</Directory>

tom
http://172.16.100.1/~tom/

PV: Page View,每天的页面访问量
UV: User View, 每天的独立IP访问量

/web/html

/www/forum bbs

http://172.16.100.1/bbs/images/logo.jpeg

定义网站文档目录
访问选项:options
基于主机的访问控制
基于用户或组的访问控制
用户个人站点
错误日志
日志格式
访问日志 PV UV
路径别名
CGI
虚拟主机

Apache的指令:
Listen [IP:]PORT
MPM: MultiPath Modules
    prefork: 一个请求用一个进程处理,稳定性好、大并发场景下消耗资源较多;
    worker:每个请求用一个线程处理(启动一定数量的进程,每个进程生成一定数量的线程)
    event:每个进程处理多个请求,基于事件来实现 (apache 2.2测试)
    mpm_winnt

httpd, httpd.worker, httpd.event

/etc/sysconfig/httpd

prework
<IfModule prefork.c>
    StartServers
    MinSpareServers
    MaxSpareServers
    MaxClients
    ServerLimit
    MaxRequestsPerChild
</IfModule>

ErrorLog
LogLevel

LogFormat
    combined
    common
CustomLog

路径别名:
Alias /URL "local_path"

User
Group

CGI: Common Gateway Interface, 通用网关接口,协议

网页内容:动态内容,静态内容
静态内容:
    .jpeg
    .gif
    .png
    .html
    .css
动态内容:
    编程语言写好程序-->执行一次,生成处理结果,经过html格式化后的文本

echo "<h1>Hellow world</h1>"


这里写图片描述🔗

备份地址: 【httpd配置