httpd

简介:

http协议

URL:unifrom Resource Locator

URL方案:scheme

服务器地址:ip:prot

资源路径:

基本语法:

<scheme>://<user>:<password>@<host>/<path>:<params>?<query>#<frag>

http报文语法:

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,错误信息,服务器端



html:编辑语言,超文本标记语言;

css:cascading style sheet:

js:javascript,

MIME:多用途互联网邮件扩展。使得可以基于文本传输发送非文本数据

web资源:

静态文件:.jpg、.gif、.html、.txt、.js、.css、.MP3、.avi

动态文件:.php、.jsp

http协议版本:

http/0.9:原始版本

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

http/1.1:增强了缓存功能

spdy

http/2.0

一次完整的http请求过程:

1.建立处理连接:接收请求或者拒绝请求

2.接收请求

接收来自网络的请求报文中对某个资源的一次请求的过程

并发访问响应模型

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

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

复用I/O结构:一个进程响应N个请求

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

事件驱动:

复用的多进程I/O结构:启动多个进程,每个进程启动多个线程

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

4.访问资源

本地文件系统路径下某个路径称为DocRoot

/var/www/html/

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

1.docroot

2.alias

3.虚拟主机docroot

4.用户家目录docroot

5.构建响应报文

6.发送响应报文

7.记录日志

  

http服务器程序;

httpd(apache)

nginx

lighttpd

应用程序服务器:

IIS

tomcat,jetty,jboss,resin

webshpere(ibm),weblogic(ba--oracle),oc4j(oracle)

https://www.netcraft.com/查看各种应用市场份额

httpd的安装配置和使用

httpd:apache

a patchy server=apache 

ASF:apache software foundation

httpd的特性;

高度模块化:core+modules

DSO:Dynamic Shard Object 动态共享对象

MPM;Multipath Processing modules 多路处理模块

prefork(非常重要):多进程模型,每个进程响应一个请求;

一个主进程,负责生产N个子进程,子进程也称为工作进程,每个子进程处理一个用户请求,即使没有用户请求,也会预先生成多个空闲进程,随时等待请求到达。

最大不会超过1024个

worker:启动多个进程,每个进程生成多个线程,每个线程响应一个用户请求;

event:启动多个线程,每个线程响应N个请求;

event-driven:事件驱动

httpd的功能特性:

丰富用户认证:基本认证和摘要认证

CGI:原生支持perl CGI

虚拟主机:

基于端口、IP、主机名

反向代理:

负载均衡

用户站点:

路径别名:

支持第三方模块

安装方式:

rpm

编译安装

CentOS 6: httpd

配置文件:

/etc/httpd/conf/httpd.conf

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

服务脚本:

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

脚本配置文件:/etc/sysconfig/httpd

模块目录:

/etc/httpd/modules: 链接文件

/usr/lib64/httpd/modules

主程序:

/usr/sbin/httpd: prefork 

/usr/sbin/httpd.event: event

/usr/sbin/httpd.worker: worker

日志文件目录:

/var/log/httpd

access_log: 访问日志

error_log: 错误日志

站点文档根目录:

/var/www/html/images/a.jpg

http://www.test.com/images/a.jpg


常用配置:

1.修改监听端口

Listen [IP:]PORT

Listen 80

Listen 172.16.6.14:8080


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

如何断开?

数量限制;100

时间限制:可以配置

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

使用较短的持久连接时间;

httpd-2.4 支持毫秒级的持久连接

KeepAlive {On|Off}

MaxKeepAliveRequests 100

KeepAliveTimeout 15




测试:telnet 172.16.6.14 80

 GET / HTTP/1.1

 Host:172.16.6.14 

 

3.MPM

prefork,worker,event

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

不同MPM机制的支持:确认方法

ps  aux | grep httpd

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

查看模块列表的命令

httpd -l

Compiled in modules:

 core.c

 prefork.c

 mod_so.c

 http_core.c

查看所有今天编译和动态装载的模块

 httpd -M

更换使用的httpd程序:

修改/etc/sysconfig/httpd



vi /etc/httpd/conf/httpd 

prefork的配置

<IfModule prefork.c>

StartServers       8

MinSpareServers    5 --最小空闲进程数

MaxSpareServers   20

ServerLimit      256  --最多启动多少个进程

MaxClients       256

MaxRequestsPerChild  4000

</IfModule>

worker的配置

<IfModule worker.c>

StartServers         4

MaxClients         300

MinSpareThreads     25

MaxSpareThreads     75

ThreadsPerChild     25

MaxRequestsPerChild  0

</IfModule>

PV,UV

PV:page view

UV:user view

独立ip量

4.DSO

/usr/lib64/httpd/modules

模块路径可以使用相对地址;

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

存放路径/etc/httpd/modules/ 

修改/etc/httpd/conf/httpd 中的 LoadModule

service httpd reload

5.定义‘Main’server的稳当页面路径

DocmentRoot

文档路径映射:

DocmentRoot指向的路径为url路径的起始位置;

6.站点访问控制

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

文件系统路径:<Directory “”></Directory>

 <file ""></file>

 <fileMatch""></FileMatch>

URL路径:

<Location ""></Location>

访问控制机制:

基于来源地址:

基于账号:

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

(1)Options

所有可用值:Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews

None,All

Indexes:索引

FollowSymLinks:运行跟踪符号链接文件

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

Order:检查次序

Order allow ,deny

Order deny,allow

Allow from 运行IP

Deny from 拒绝IP

文本浏览器

enliks -dump http://172.16.6.14

来源地址:

IP

NetAddr:

172.16

172.16.0.0

172.16.0.0/16

8.定义默认主页

DirectoryIndex index.html index.html.var

9.日志设定

错误日志:

Errlog logs/error_log

loglevel warn

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

访问日志:

Customlog logs/access_log 

LogFormat 定义日志格式

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

10.路径别名

Alias /test/  "/var/test2/index.html"

11.设定默认字符集

AddDefaultCharset UTF-8

gbk,gbk2312 ,gb18030

12.基于用户的访问控制

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

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

认证类型:

basic:明文

digest:消息摘要

安全域:需要用户认证后才能访问的路径,应该通过名称对其标识,并用于告知用户认证的原因

用户账号密码存储:文本文件;SQL数据库;ldap;nis

(1) 基于用户进行认证 


<Directory "/var/www/html/admin">

Options none

AllowOverride AuthConfig

AuthType Basic

AuthName "Admin Area."

#AuthBasicProvider file

AuthUserFile /etc/httpd/conf/.htpasswd

Require valid-user

</Directory>


Require valid-user: 文件中所有用户均可访问

Require user USERNAME, ...


(2) 提供认证文件

htpasswd

-c: 如果此文件事先不存在,则创建;注意,只能在创建第一个用户时使用;

-m:以md5的格式编码存储用户的密码信息

-D:删除指定用户


(3) 组认证

<Directory "/var/www/html/admin">

Options none

AllowOverride AuthConfig

AuthType Basic

AuthName "Admin Area."

#AuthBasicProvider file

AuthUserFile /etc/httpd/conf/.htpasswd

AuthGroupFile /etc/httpd/conf/.htgroup

Require group GROUP_NAME

</Directory>


组文件:

组名:user1 user2 user3

13.虚拟主机

有三种是实现方案;

基于IP

为每个虚拟主机准备至少一个ip地址:实践中很少使用

基于port

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

基于hostname

为每个虚拟主机准备至少一个专用hostname;

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

注意:一般虚拟主机不要与中心主机混用,所以要使用虚拟主机,先禁用中心主机;

禁用中心主机:注释DocmentRoot

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

<VirtualHost IP:PORT>

ServerName 

DocumentRoot 

ServerAlias

ErrorLog

CustomLog

</VirtualHost>

配置文件语法检查:

httpd -t

service httpd configtest


配置示例:

基于IP:

<VirtualHost 172.16.100.7:80>

ServerName web1.test.com

DocumentRoot "/web/hosta"

</VirtualHost>


<VirtualHost 172.16.100.8:80>

ServerName web2.test.com

DocumentRoot "/web/hostb"

</VirtualHost>

基于port:

<VirtualHost 172.16.100.8:80>

ServerName web2.test.com

DocumentRoot "/web/hostb"

</VirtualHost>


<VirtualHost 172.16.100.8:8080>

ServerName web3.test.com

DocumentRoot "/web/hostc"

</VirtualHost>

基于hostname:

启用NameVirtualHost 172.16.100.7:80

VirtualHost 172.16.100.7:80>

ServerName web1.test.com

DocumentRoot "/web/hosta"

</VirtualHost>


<VirtualHost 172.16.100.7:80>

ServerName web2.test.com

DocumentRoot "/web/hostb"

</VirtualHost>

<VirtualHost 172.16.100.7:80>

ServerName web3.test.com

DocumentRoot "/web/hostc"

</VirtualHost>

14.内置status页面

启用server-status





     本文转自阿伦艾弗森 51CTO博客,原文链接:http://blog.51cto.com/perper/1958645,如需转载请自行联系原作者





相关文章
STM32F103标准外设库——SysTick系统定时器(八)
STM32F103标准外设库——SysTick系统定时器(八)
2428 1
STM32F103标准外设库——SysTick系统定时器(八)
|
7月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
574 137
|
存储 人工智能 安全
阿里云网盘与相册服务(简称PDS)是阿里云为客户提供的面向企业、团队与个人的数据管理开放平台
阿里云网盘与相册服务(简称PDS)是阿里云为客户提供的面向企业、团队与个人的数据管理开放平台
840 1
|
5月前
|
机器学习/深度学习 存储 边缘计算
物联网平台实战:从设备接入到数据分析的端到端架构演进
本文系统阐述物联网平台从设备接入到数据分析的架构演进路径,涵盖多协议接入、边缘计算、实时处理与AI集成等关键技术,分享高并发优化、分层存储、安全认证等实战经验,助力企业构建高效、可扩展的IoT平台,推动数字化转型与智能决策。
|
网络协议 网络架构
Ch4.网络层(三)
网络层是OSI参考模型中的第三层,介于传输层和数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向传输层提供最基本的端到端的数据传送服务。
2973 0
|
10月前
|
机器学习/深度学习 数据可视化 数据安全/隐私保护
抖音留痕脚本,快手小红书微博,自动留痕插件工具
就是用autojs写的一个自动化工具脚本,其实写了好几天,感觉有点价值就分享出来吧 核心代码实现
|
人工智能 自然语言处理 供应链
产品设计师如何培养创造力?生成式人工智能时代的破局之道
本文探讨生成式人工智能对产品设计师创造力的影响,从技术赋能、认知升级和伦理坚守三方面分析。技术赋能通过效率提升与灵感激发重构设计流程;认知升级强调理解技术本质,将局限转化为创新契机;伦理坚守确保技术应用正向价值。最后提出通过实践与认证构建未来创造力体系,在技术与人文交汇处重新定义创造力边界。
|
人工智能 文字识别 API
|
存储 消息中间件 SQL
Apache Flink 在国有大型银行智能运营场景下的应用
建信金融科技开发工程师周耀在 FFA 2021 的分享
Apache Flink 在国有大型银行智能运营场景下的应用
|
人工智能 算法 机器人
DeepSeek眼中无法替代的职业领域
根据DeepSeek的研究,未来10年内,某些依赖人类核心能力的岗位将对AI具备“免疫性”。这些岗位包括需要生物性体验与情感联结的职业(如教育、心理咨询、母婴护理),依赖创造力与隐性经验积累的职业(如艺术创作、手工艺传承、科研决策),涉及伦理与文明合法性的职业(如司法、宗教领袖、文化遗产守护者),应对非结构化环境的职业(如紧急救援、复杂医疗决策),以及新兴的“反AI化职业”(如AI伦理审计师、人类真实性鉴定师)。这些职业的本质在于验证人类身份的独特性和不可替代性,涵盖生物性特权、伦理责任及文明解释权。
392 0