http:hypter text transfer protocol

html:编程语言,超文本标记语言

MIME:multipurpose internet mail extesion

工作机制:

http请求

http响应

web资源web:web resourse

静态文件:.jpg,.gif,.txt.js,.css,.mp3,.avi

动态文件:.php,.jsp,

媒体:

媒体类型(MIME类型):major/minor

text/html

text/plain

image/jpeg

image/gif

URI:uniform resource identifier

URL:uniform resource locator,用于描述某服务某特定资源的位置

scheme://server:port/path/to/resource

http://www.magedu.com/images/logo.jpg

URN:uniform resource naming

http协议版本:

HTTP/0.9:原型版本,功能简陋

HTTP/1.0:第一个广泛使用的版本,支持MIME

HTTP/1.1:增强了缓存功能

spdy

HTTP/2.0:

rfc

一次完整的http请求过程:

(1)建立或处理连接,接收请求或拒绝请求

(2)接收请求

接收来自于网路ode请求报文中对某资源的一次请求过程

并发访问模型(web I/O):

单进程I/O结构,启动一个进程处理用户请求,而且每次只处理一个,多个请求被串行响应

多进程I/O结构:并行多个进程,每个进程响应一个请求

复用I/O结构,一个进程响应n个请求

多线程模型:一个进程生成N个线程,每个线程响应一个用户请求,

事件驱动:event-driven

复用的多进程I/O结构:启动多个(m)进程,每个进程响应n个请求

(3)处理请求,对请求报文进行解析,并获取请求的资源及请求方法等相关信息

元数据:请求报文首部

<method> <URL> <version>

host:www.magedu.com  请求的主机名称

connection:

(4)访问资源:获取请求报文中请求的资源

web服务器:即存放了web资源的服务器,负责向请求者提供对方请求的静态资源或动态资源

/var/www/html/

images/1.jpg

http://www.magedu.com/images/1.jpg

web服务器资源路径映射方式:

(a)docroot

(b)alias

(c)虚拟主机docroot

(d)用户家目录docroot

(5)构建响应报文

资源的MIME类型:

显式分类

魔法分类

协商分类

URL重定向:

web服务构建的响应并非客户端请求的资源,而是资源另外一个访问路径

(6)发送响应报文

(7)记录日志

http服务器程序:

httpd(apache)

nginx

lighttpd

应用程序服务器:

IIS

tomcat,jetty,jboss,resin

webshpere,weblogic

httpd送往安装配置和使用:

httpd:apache

a patchy server=apache

ASF:apache software foundation

httpd的特性:

高度模块化:core+modules

DSO:dynamic shared object

MPM:multipath procession modules

prefork:多进程模型,每个进程响应一个请求

一个主进程,负责生成n各子进程,子进程也被称为工作进程,每个子进程处理一个用户请求,即便没有 用户请求

也会提前生成多个空闲进程,随时等待进程的到来,最大不会超过1024个

worker

event

http协议:

http/0.9,http/1.0,http/1.1,http/2.0

http协议:stateless

服务无法持续追踪访问者来源

cookie,session

http事务:

请求:request

响应:response

报文语法格式:

request报文

<method><request-URL> <version>

<headers>

<entity-body>

response报文

<version> <status> <reason-phrase>

<headers>

<entity-body>

method:请求方法,标明客户端希望服务器对资源执行的动作

GET、HEAD、POST

version:

HTTP/<major>.<minor>

status:

三位数字,如200,301,302,404,502,标记请求处理过程中发生的情况

reason-phrase:

状态码所标记的状态的简要描述

headers:

每个请求或响应报文可包含任意各首部,每个首部都有首部名称,后面跟一个冒号,再跟一个可选空格,接着是一个值

entity-body:请求时附加的数据或响应时附加的数据

method(方法):

GET:从服务器获取一个资源

HEAD:只从服务器获取文档的响应首部

POST:向服务器发送要处理的数据

PUT:将请求的主体部分存储在服务器上

DELETE:请求删除服务器上指定的文档

TRACE:追踪请求到达服务器中间经过的代理服务器

OPTIONS:请求服务器返回对指定资源支持使用的请求方法

协议查看或分析的工具:

tcpdump,tshark,wireshark

status(状态码):

1XX:100-101,信息提示

2XX:200-206,成功

3XX:300-305,重定向

4XX:400-415,错误类信息,客户端错误

5XX:500-505错误类信息,服务器端错误

常用的状态码:

200:成功,请求的所有数据通过响应报文的entity-body部分发送OK

301:请求的URL直线的资源已经被删除,但在响应报文中通过首部Location指明了资源现在所处的新位置,Moved Permantently

302:与301相似,但在响应报文中通过Location指明资源现在所处的临时新位置,Found

304:客户端发出了条件式请求,但服务器上的资源未曾发生改变,则通过响应此响应状态码通知客户端,Not Modified

401:需要输入装好和密码认证方能访问资源,Unauthorized

403:请求被禁止,Forbidden

404:服务器无法找到客户端请求的资源,Not Found

500:服务器内部错误,Internal Server Error

502:dialing服务器从后端服务器受到了一条伪响应,Bad gateway

headers:

格式:

Name:Value

Content-Type

text/html; charset=utf-8

Content-Typetext/html;

charset=utf-8

Cxy_all

baidu+c32a82d228d0caa092110a27f4a62f01

Date

Mon, 19 Mar 2018 04:01:50 GMT

Expires

Mon, 19 Mar 2018 04:01:50 GMT

Server

BWS/1.1

Set-Cookie

BDSVRTM=11; path=/ BD_HOME=0; …59; path=/; domain=.baidu.com

Strict-Transport-Security

max-age=172800

Transfer-Encoding

chunked

首部的分类:

通用首部

请求首部

响应首部

实体首部

扩展首部

通用首部:

Date:报文的创建时间

Connection:连接状态,如keep-alive,close

Via:显示报文经过的中间节点

请求首部:

Accept:通过服务器自己可接受的媒体类型

Accept-Charset:

Accept-Encoding:接受编码格式,如zip

Accept-language:接受的语言

Client-IP

Host:请求的服务器名称和端口号

Referer:包含当前正在请求的资源的上一级资源

User-Agent:客户端代理

条件式请求首部:

Expect:

If-Modified-Since:自从指定时间之后,请求的资源是否发生过修改

If-Unmodified-Since:

If-None-Match:本地缓存中存储的文档的ETag标签是否与服务器文档的ETag不匹配

If-Match:

安全请求首部:

Authorization:向服务器发送认证信息,如账号和密码

Cookie:客户端向服务端发送cookie

Cookie2:

代理请求首部:

Proxy-Authorization:向代理服务器认证

响应首部:

信息性:

Age:响应持续时长

Server:服务程序软件名称和版本

协商首部:某资源多种表示方法时使用

Accept-Ranges:服务器可接受的请求范围类型

Vary:服务器查看的其他首部列表

安全响应首部:

Set-Cookie:向客户端设置cookie

Set-Cookie2:

WWW-Authenticate:来自客户端的对客户端的质询认证表单

实体首部:

Allow:列出此实体可使用的请求方法

Location:告诉客户端真正的实体位于何处

Content-Encoding

Content-Language:

Content-Length:主体的长度

Content-Location:实体真正所处位置

Content-Range:

Content-Type:主体的对象类型

缓存相关:

ETag:实体的扩展标签

Expores:实体的过期时间

Last-Modified:最后一次修改的时间

httpd(2):

centos 6:2.2

centos 7:2.4

安装方式:

rpm

编译安装:

centos 6:

程序环境

配置文件:

/etc/httpd/conf/httpd.conf

/etc/httpd/conf.d/*.conf

服务脚本:

/etc/rc.d/init.d/httpd

配置文件:

/etc/sysconfig/httpd

主程序文件:

/usr/sbin/httpd

/usr/sbin/httpd.event

/usr/sbin/httpd.worker

日志文件:

/var/log/httpd

access_log:访问日志

error_log:错误日志

站点文档目录:

/var/www/html

配置文件的组成:

grep "SEssion" /etc/httpd/conf/httpd.conf

### Session 1:global senvironment

### Sesison 2:'main' server configuration

### Session 3:virtual hosts

配置格式:directive value

directive:不区分大小写字符

value:为路径时,取决于文件系统

常用配置:

1.修改监听的IP和port

Listen [IP:]port

/etc/httpd/conf/httpd.conf文件中修改

省略IP表示监听本机所有IP,Listen可重复出现多次

2.持久连接

persistent connection:连接建立,每个资源获取后不会断开连接,而是继续等待其他的请求完成

如何断开?

数量限制:100

副作用:对并发访问控制量较大的服务器,持久连接功能网会使用某些请求得不到响应

折中:使用较短的持久连接时间

httpd-2.4 支持毫秒级持久时间

非持久连接

KeepAlive On|Off

MaxKeepAliveRequests #

KeepAliveTimeout #

测试:

telnet host post

GET ?URL HTTP/1.1

Host:hostname or ip

3.MPM

Multipath process module:多道处理模块

prefork,worker,event

httpd-2.2不支持同时编译多个模块,所以只能编译时选定一个:rpm安装的包提供三个二进制程序文件,分别用于实现对不同MPM机制的支持

确认方法:

ps aux | grep httpd

默认为/usr/sbin/httpd,其使用prefork

查看编译的模块列表:

# httpd -l

Compiled in modules:

core.c

mod_so.c

http_core.

查看静态编译及动态装载的模块:

# httpd -M

更换使用的httpd程序

/etc/sysconfig/httpd文件中

HTTPD=

配置所选用的MPM的属性

安装完默认使用prefork模型

StartServers 8 #服务启动后默认开启的进程数

MinSpareServers 5 #最少空闲进程数

MaxSpareServers 20 #最多空闲进程数

ServerLimit 256 #每个进程允许开启最多的子进程数

MaxClients 256 #每个进程最多用户链接数

MaxRequestsPerChild 4000 #长连接时每个用户最多请求数

worker模型:要支持worker模型需要配置/etc/sysconfig/httpd,开启以下行:

HTTPD=/usr/sbin/httpd.worker

StartServers 4 #服务启动默认开启的进程数

MaxClients 300 #最多同时客户连接数

MinSpareThreads 25 #最少空闲进程数

MaxSpareThreads 75 #最好空闲进程数

ThreadsPerChild 25 #每个进程开启的线程数

MaxRequestsPerChild 0

配置服务器支持keep-alived(长连接)

KeepAlive {On|Off} #是否支持长连接

KeepAliveTimeout 2 #长连接超时时间

MaxKeepAliveRequests 50 #超时时间内允许请求的次数

重启服务生效

PV,UV

PV:page view

UV:user view

独立IP量

300*86400=40W+

4.DSO

配置指令实现模块加载

LoadModule <mod_name> <mod_path>

模块路径可使用相对地址

相对于serverroot(/etc/httpd)指向的路径而言

/etc/httpd.modules/

5.定义'Main' server的文旦页面路径

DocumentRoot指向的路径为URL路径的起始位置

Document "/var/www/html"

test/index.html-->http://host:port/test/index.html

6.站点访问控制

可基于两种类型的路径指明对那些资源进行访问控制

文件系统路径:

<Directory ""> </Directory>

<File ""></File>

<FileMatch ""></FileMatch>

URL路径:

<Location ""></Location>

...

访问控制机制:

基于来源IP地址:

基于用户账号:

7.Directory中"基于来源地址"实现控制访问

(1)options

所有可用特性:index includes FollowSymLinksOwnerMatch execCGI MultiViews

index索引:

followSymLinks:允许跟踪符号链接文件

(2)基于来源地址的访问控制机制

order:检查次序

order allow,deny

order deny,allow

allow from

deny from

来源地址:

IP

NetAddr:

172.16

172.16.0.0

172.16.0.0/16

172.16.0.0/255.255.0.0

可以使用通配符

8.定义默认主页面

DirectoryIndex index.html .var

9.日志设定

错误日志:

ErrorLog log/error_log

LogLevel warn

debug,info,notice,warn,error,crit,alert,emerg

访问日志:

customer

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined

%h:客户端IP地址

%l:Remote logname (from identd, if supplied). -表示为空

%u:Remote user,(from auth,May be bogus if return status (%s) is 401 (unauthorized))

%t:Time the request was received,服务器接收到请求的时间

%r:First line of request.请求报文的首行信息

%s:响应状态码

%b:Size of response in bytes,响应报文的大小,单位是字节,不包括响应报文首部

%{VARNAME}i:请求报文当中“referer”首部的值,当前资源的访问入口,即从哪个页面中的超链接跳转而来。

%{User-Agent}i:请求报文中“User-Agent”首部的值,即发出请求用到的应用程序

10.路径别名

DocumentRoot "/www.htocs"

http://www.magedu.com/download/bash.rpm

-->/www/htocs/download/bash.rpm

Alias /URL/ "path/to/somedir/"

Alias /bbs/  "forum/htdocs"

http://www.magedu.com/bbs/index.html

-->/forum/htdocs/bbs/

11.设定默认字符集

AddDefaultCharset UTF-8

GBK,GB2312,GB18030

12.基于用户的访问控制

认证质询:

www-Authenticate:响应码为401,拒绝客户点请求,并说明客户端提供账号和密码

认证:

Authorization:客户端用户填入账号和密码后再次发送请求报文,认证通过则服务器端发送响应资源

认证类型:

basic:明文

digest:消息摘要

安全域:

需要认证后方能访问的路径

应该通过形成对其进行标识,并用于改制用户认证的原因

用户的账号和密码存储于何处:

虚拟账号,仅用于访问服务时用到的认证标识

存储:

文本文件

SQL数据库

ldap

nis

basic认证:

(1)定义安全域

<Directory "">

Options None

AllowOverride None

AuthType Basic

AuthName "string"

AuthUserFile "path/to/HTTPD_user_passwd_file"

Require user username1 username2 ...

</Directory>

(2)提供账号和密码存储(文本文件)

使用htpasswd命令进行管理

htpassws [options] passwordfile username

-c:自动创建passwordfile,因此,仅应该在添加第一个用户时使用

-m:md5加密用户密码

-s:shal加密用户密码

-D:删除指定用户

(3)基于组进行认证

<Directory "">

Options None

AllowOverride None

AuthType Basic

AuthName "string"

AuthUserFile "path/to/HTTPD_user_passwd_file"

AuthGroupFile "path/to/HTTPD_GROUP_file"

Require group group1 group2 ...

</Directory>

要提供用户账号文件和组文件

13 虚拟主机

有三种实现方案:

基于ip:

为每个虚拟主机准备至少一个ip地址

基于port:

为每个虚拟主机准备至少一个专用port,实践中很少使用

基于hostname

为每个虚拟主机尊卑至少一个专用hostname

可混合使用上述三种方式中 任意方式:

注意:

一般虚拟主机莫与中心主句混用,所以,要使用虚拟主机,先禁用中心主机

禁用中心主机:注释DocumentRoot

每个虚拟主机都有专用配置:

<VirtualHost "IP:PORT">

ServerName

DocumentRoot ""

</VirtualHost>

ServerAlias:虚拟主机的别名:

ErrorLog

CustomLog

<Directory "">

</Directory

示例1:基于ip

<VirtualHost 172.16.100.6:80>

ServerName web1.magedu.com

DocumentRoot "/vhosts/web1.htdocs"

</VirtualHost>

<VirtualHost 172.16.100.7:80>

ServerName web2.magedu.com

DocumentRoot "/vhosts/web12.htdocs"

</VirtualHost>

访问通过172.16.100.6:80和172.16.100.7:80

示例2:基于port

<VirtualHost 172.16.100.6:80>

ServerName web3.magedu.com

DocumentRoot "/vhosts/web3.htdocs"

</VirtualHost>

<VirtualHost 172.16.100.6:8080>

ServerName web4.magedu.com

DocumentRoot "/vhosts/web4.htdocs"

</VirtualHost>

访问通过172.16.100.6:80和172.16.100.6:8080

示例3:基于hostname

<VirtualHost 172.16.100.6:80>

ServerName web1.magedu.com

DocumentRoot "/vhosts/web1.htdocs"

</VirtualHost>

<VirtualHost 172.16.100.6:80>

ServerName web2.magedu.com

DocumentRoot "/vhosts/web2.htdocs"

</VirtualHost>

<VirtualHost 172.16.100.6:80>

ServerName web3.magedu.com

DocumentRoot "/vhosts/web3.htdocs"

</VirtualHost>

14.内置的status页面

<Location /Server-status>

Sethandler server-status

Order deny,allow

Deny from all

Allow from 172.16

</Location>

基于账号实现访问控制

httpd-2.2

curl命令:

curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。

curl [options] [URL...]

curl的常用选项:

-A/--user-agent <string> :设置用户代理发送给服务器

-basic:使用HTTP基本认证

--tcp-nodelay:使用TCP——NODELAY选项

-e/--referer:来源网址

用法:curl [options] [URL…]

另一个工具:elinks

SSL会话简化过程:

(1)客户端发送可供选择的加密方式,并向服务器请求证书

(2)服务器端发送证书以及选定的加密方式给客户端

(3)客户端取得证书并进行证书验证

如果信任给其发证书的CA

(a)验证证书来源的合法性,用CA的公钥解密证书上数字签名

(b)验证证书的内容的合法性,完整性验证

(c)检查证书的有效期限

(d)检查证书是否被吊销

(e)证书终于拥有者的名字,与访问的目标主机要一致

(4)客户端生成临时会话秘钥(对称秘钥),并使用服务器端的公钥加密此数据发送给服务器,完成秘钥交换

(5)服务器用此秘钥加密用户请求的资源,响应给客户端

注意:SSL会话是基于IP地址创建,所以单IP的合租记上,仅可以使用一个https虚拟主机

配置httpd支持https:

(1)为服务器申请数字证书

测试:通过私建CA发证书

(a)创建私有CA

(b)在服务器创建证书签署请求

(c)CA签证

(2)配置httpd支持使用ssl,及使用的证书

yum –y install mod_ssl

配置文件:/etc/httpd/conf.d/ssl.conf

DocumentRoot

ServerName

SSLCertificateFile

SSLCertificateKeyFile

http协议及apache配置相关推荐

  1. Apache配置(转载)

    Apache配置 http://grid.tsinghua.edu.cn/home/liulk/publish/computer/ApacheConfig.html Linux Apache Web ...

  2. tomcat +apache 配置集群

    2019独角兽企业重金招聘Python工程师标准>>> APACHE2.2.25+TOMCAT6.0.37配置负载均衡 目标: 使用 apache 和 tomcat 配置一个可以应用 ...

  3. apache 服务器配置 虚拟,apache配置虚拟服务器

    apache配置虚拟服务器 内容精选 换一换 Atlas 200 DK开发者板支持通过USB端口或者网线与Ubuntu服务器进行连接,连接示例图如图1所示.Atlas 200 DK连接Ubuntu服务 ...

  4. Apache配置+php配置

    一.apache配置 首先下载apache安装包,下载地址:http://httpd.apache.org/download.cgi 我的是win7系统,所以下载windows的安装包,点击我圈出的地 ...

  5. windows下apache配置虚拟主机的两个方法

    windows下apache配置虚拟主机方法一: 对httpd.conf进行设置: 1.注释以下三行 #ServerAdmin #ServerName #DocumentRoot 2.去掉mod_pr ...

  6. Apache配置--用户认证(针对目录访问)-update2015-05-02

    通过Apache配置可以限制用户对目录的访问,会弹出像phpadmin一样的登陆框. ========================================================= ...

  7. 【Linux】Centos7 下使用Apache 配置网站虚拟地址, 另附 laravel 虚拟地址配置

    最近使用laravel 搞项目,配置本地开发环境,很是头疼,不知道是什么情况,简单直白地总结一下,附上配置详情 电脑环境: Centos7 + lamp 你的电脑上有Apache Apache配置文件 ...

  8. 【CyberSecurityLearning 32】Apache配置、Apache的访问控制设定、LAMP平台的搭建

    目录 Apache配置 web服务 Apache 1.先启动httpd服务 2.通过端口来验证服务是否启动 3.建立主页 4.关于Apache服务软件的主配置文件分析 Apache的访问控制设定 1. ...

  9. Apache配置虚拟主机三大问题--自己的相关坑

    Apache配置虚拟主机三大问题 第一大问题:配置失败 主要是apache 2.4以后配置步骤不再像以前那样了,正确步骤如下: 第一步:在httpd.conf中开启虚拟主机配置功能 #Include ...

最新文章

  1. 资源监控工具Spotlight-使用说明
  2. 爱立信:用什么保持全球老大的地位?
  3. Python __dict__和vars()
  4. SpringSecurity集中式整合之使用数据库数据实现认证
  5. 中小企业邮件系统选型攻略
  6. 7. 从数据库获取数据- 从零开始学Laravel
  7. HDU2567 寻梦【输入输出流+水题】
  8. C Primer Plus第三章总结
  9. PHP--数据库访问(增、删、改、查)
  10. 在项目里配置数据库驱动
  11. linux系列之常用运维命令整理笔录
  12. 统计学和python_深入浅出统计学系列python实现
  13. 2.1 Hadoop环境搭建
  14. 如何解决程序/C++Dll的兼容性问题
  15. PPT画得图转为矢量图eps
  16. 考研压力越来越大,你秃了吗?
  17. canvas实现打字输入效果
  18. OKRs-E 让目标推进成功率提升200%
  19. 北京西客站火车行李托运指南
  20. Jacobi迭代与SOR迭代求解希尔伯特矩阵

热门文章

  1. 视频文件(任意文件)二进制读写
  2. PS3视频媒体播放基本说明
  3. 绩效考核成绩管理平台
  4. 取消notepad++打开.bat文件
  5. 亚马逊测评:最前沿养号系统,如何降低成本提高效率搭建稳定的ip环境
  6. 华为网络设备SSH方式登录配置
  7. GlobalSign即将停止签发SHA1代码签名证书
  8. 怎么保存python制作的饼图_Scribus中的Python脚本:制作饼图
  9. Python·@property属性
  10. Altium Designer 10 下载和安装破解教程