http服务器搭建之apache与nginx的特性
一、了解一些简单的概念
HTTP服务器程序:
httpd(apache)
nginx
lighttpd(功能和nginx差不多,活跃度不如ng)
应用程序服务器:
IIS
Tomcat(开源jsp容器),jetty(开源轻量级jsp容器),jboss(2次封装tomcat-jsp),resin(教学)、webshpere(重量级)、weblogic(bea公司大量市场份额),oc4j(oracle的,已经把bea公司买了,oc4j已经没有市场)
二、HTTPD(Apache)
httpd:apache(a patchy server)
ASF(软件基金会):apache software foundation
1、httpd特性
①、高度模块化:core + modules,
运行再编译或运行时,选择哪些模块将会加载到服务器,来确定服务器特性
②、DSO:Dynamic Shared Object 动态共享对象
③、MPM:Multipath Processing Modules 多路处理模块
能够更好的为有特殊要求的站点定制,例如,要求高伸缩性的站点可以选择线程的MPM,(worker,event);需要可靠性或者与旧软件兼容站点可以使用prefork。
httpd-2.4支持,MPM支持运行DSO机制;以模块形式按需加载;
1)prefork:多进程模型,每个进程响应一个请求;
一个主进程:负责生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲经常,随时等待请求到达;最大不会超过1024个;
主进程:管理子进程,创建套接字,接受用户请求,并派发某个子进程
子进程:处理请求和响应请求
2)worker:多线程模型,每个现成响应一个请求;(比prefork不相上写,每天15万)
一个主进程:生成多个子进程,每个子进程负责多个线程,每个线程响应一个请求;m进程,n线程;m*n
主进程:管理子进程,创建套接字,接受用户请求,并派发给某个子进程处理
子进程:负责管理线程
线程:处理请求和响应请求;
3)event:事件驱动模型,每个线程响应N个请求;,和worker很像,多个进程+多个线程的混合模式,但是event模型下每个进程会有一个单独的线程来管理这些keep-alive类型的线程,当新的请求过来的时候,管理线程会把请求交给其他空闲线程处理,这样旧避免了每个线程都被keep-alive阻塞。但是event模型并不是所有情况都通用,再https协议下会退化成worker模型。
一个主进程:生成M个子进程,每个进程直接n个请求,m*n
主进程:管理子进程,创建套接字,接受用户请求,并派发给某个子进程
子进程:处理请求和响应请求
httpd-2.2,event为测试使用,不支持DSO机制的MPM
httpd-2.4,event为生产使用,production ready,支持DSO机制的MPM。
2、HTTPD的功能特性:
虚拟主机:能够标识虚拟主机的方式:IP + PORT + HOSTNAME(IP、Port、FQDN)
CGI:common gateway interface ,通用网关接口;
反向代理 :reverse proxy
负责均衡 :基于流量(bytraffic),基于业务(bybusiness),基于请求(byrequest)
路径别名
丰富的用于认证机制:basic、digest
支持第三方模块
三、Nginx
1、简介
nginx2004年正式发布,Apache是1995年
Apache以稳定著称但是随着互联网的日渐壮大,网站的并发变大,Apache就出现了一个C10K的问题,即一个物理服务器达到并发量1w的时候apache就会承受不了,后来2004年nginx很好的解决了c10k的问题。
淘宝用的Tengine nginx,简称tng
2、特性
模块化设计、较好扩展性(不支持动态装卸载,tng支持)
高可靠性
master--->worker
nginx服务器使用的异步机制是异步非阻塞方式,也就是master-->worker,每个工作进程使用异步非阻塞方式,可以处理多个客户端请求,当某个工作进程接收到客户端的请求,调用IO进行处理,如果不能立即获得结果,就去处理其他的请求,而客户端再此期间也无需等待响应,可以去处理其他事情,当IO返回时,就会通知此工作进程,该进程得到通知,暂时挂起当前处理的失误区响应客户端请求。
nginx采用异步非阻塞方式处理请求,处理请求具体到系统底层就是读写事件(所谓阻塞调用方式即请求事件还没准备好,线程只能一直等待,等事件准备好了再处理;而非阻塞即事件没准备好,马上返回ENGAIN,告诉你事件还没准备好,而再这期间可以先去做其他事,再回头看看事件准备好了吗,时不时的看,需要的开销也是不小的)
异步可以理解为循环处理多个准备好的事件,不会导致无畏的资源浪费,当有更多的并发数只会占用更多的内存而已
低内存消耗
10000个keep-alive连接再ningx仅消耗2.5MB
支持热部署
不停机而更新配置文件、更好日志文件、更新服务器程序版本
支持事件驱动、AIO(异步io,epoll等)、mmap(内存映射)
3、基本功能
处理静态资源的web服务器,能缓存打开的文件描述符,索引文件以及自动索引;
http,smtp,pop3协议的反向代理服务器加速,缓存、负载均衡;
支持FastCGI(fpm,LNMP),uWSGI(python),memcached server等;
模块化,非DSO机制,过滤器包括zip,图形大小调整、byte ranges,chunked responses以及SI-filter,在SSI过滤器中,到同一个proxy或FastCGI的多个子请求并发处理;
支持SSL,TLS SNI;
4、nginx结构与扩展
一个master进程,生成一个或多个worker;
事件驱动:epoll(边缘触发,支持linux2.6+),kqueue(BSD 4.1+),/dev/poll(event prots,solaris 7 11/99+);
消息通知(复用器):select,poll,rt signals(实施信号);
支持sendfile(linux2.2+),sendfile64(linux2.4.21+),sendfilev(solaris 8 7/01+);
支持输入过滤(freeBSD 4.1+)及TCP_DEFER_ACCEPT(linux2.4+);
最小化的数据库拷贝操作;
5、扩展功能
基于名称和IP 的多虚拟主机站点
支持keepalive和pipelined(管道)连接
支持平滑升级,不中断业务
定制访问日志,支持使用日志缓冲区提高日志存储性能
4xx-5xx错误代码重定向;
支持URL, 基于PCRE的rewrite重写模块,及正则表达式
支持路径别名
支持基于IP 及用户的访问控制
支持速率限制,支持并发数限制
支持 PUT,DELETE,MKCOL,COPY及MOVE等较特殊的HTTP请求
可以做HTTP反向代理及加速缓存,即负载均衡功能,内置都RS节点服务器健康检查功能,这相当于专业的Haproxy软件或LVS功能
具备Squid等专业缓存软件等缓存功能
支持FLV(flash视频);
6、nginx的工作模式
非阻塞、事件驱动、一个master生成一个或多个worker,每个worker响应n个请求;
worker*n 国人单机最高并发达到52000个
nginx是一个高性能得web服务器,能够同时处理大量得并发请求,它结合多进程机制和异步机制,异步机制使用得异步非阻塞方式,接下来就给大家
7、五大模块
核心模块、标准HTTP模块、可选HTTP模块、邮件服务模块和第三方模块。
1)、核心模块:nginx最基本的核心服务,进程管理、权限控制、错误日志记录等;
2)、标准HTTP模块:标准HTTP模块支持标准的HTTP功能;
3)、可选HTTP模块:主要用于扩展标准HTTP功能,让Nginx能处理一些特殊服务;
4)、邮件服务模块:主要用于支持Nginx的邮件服务;
5)、第三方模块:扩展Nginx服务器应用,完成开发者想要的功能;
模块图如下:
8、nginx,master-worker模型架构图
9、nginx整体架构图
主进程
nginx启动时,会生成两种类型的进程,一个是主进程master,一个或多个工作进程worker,主进程并不处理网络请求,主要负责调度工作进程,加载配置、启动工作进程及非停升级。所以nginx启动后查看系统进程,就能看到至少两个nginx进程
工作进程
服务器实际处理网络请求及响应的是工作进程worker,在类unix系统上,nginx可以配置多个worker,每个worker进程都可以同时处理数以千计的网络请求。
模块化设计
包括核心和功能性模块,核心模块负责维持要给运行循环run-loop,执行网络请求处理的不同阶段的模块功能,比如:网络读写、存储读写、内容传输、外出过滤,以及将请求发往上游服务器等,而其代码模块化设计,也使得我们可以根据需要对功能模块进行适当的选择和修改,编译成具有特定功能的服务器
事件驱动模型
基于异步及非阻塞的事件模型,可以说是nginx得以获得高并发、高性能得关键因素,同时也得益于对linux、solaris及类BSD等操作系统内核中事件通知及I/O性能增强功能得采用,如kqueue、epoll及event ports。
代理设计
代理设计,可以说是nginx深入骨髓得设计无论是对于HTTP,还是FastCGI、Memcache、Redis等得网络请求或响应,本质上都采用了代理机制,所以,Nginx天生就是高性能得代理服务器。
转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/10150955.html
http服务器搭建之apache与nginx的特性的更多相关文章
- WEB服务器如何选择 Apache or Nginx?
Web服务器是直接影响网站性能的关键因素,也是每个站长选择网站运营环境时必然考虑的问题.目前Web服务器市场产品众多,最为主流和代表性的当属Apache.Nginx以及微软的IIS.本文目的是通过Ap ...
- rtmp与hls流媒体服务器搭建:ubuntu下Nginx搭建初探与rtmp-module的添加
关键词:Nignx(http服务器):rtmp,hls(流媒体服务) 前言:感谢开源,感谢战斗民族.现在在做流媒体服务的一些工作,流媒体服务器搭建的网上教程多入牛毛,但是细细查看,发现很多同志贴上来的 ...
- 服务器搭建纪录linux+mysql+nginx+php
新的项目启动 第一版 首先买了阿里云,选好环境镜像包,一键安装. 第一版php打算不用框架,完全手写,主要的功能点 数据交互和图片传输. 后台搭建好后,使用PHP的Laravel, web端还是选定b ...
- WEB服务器搭建(Apache+Tomcat+eclipse)
1.下载xampp安装,选择Apache+MySQL+Tomcat 官方下载链接:https://www.apachefriends.org/zh_cn/download.html 2.下载安装jav ...
- 【转】PHP利用Apache、Nginx的特性实现免杀Webshell
转载备忘: get_defined_vars().getallheaders()是两个特性函数,我们可以通过这两个函数来构造我们的webshell. 前几天看到的,一直忘记写,填坑. 环境 函数 用法 ...
- PHP服务器Apache与Nginx的对比分析
PHP服务器Apache与Nginx的对比分析 本篇文章给大家带来的内容是关于PHP服务器Apache与Nginx的对比分析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. Apach ...
- Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPress&Ghost、Jenkins、Gitlab)
Web服务和应用是目前信息技术领域的热门技术.如何使用Docker来运行常见的Web服务器(包括Apache.Nginx.Tomcat等),以及一些常用应用(LAMP.CMS等).包括具体的镜像构建方 ...
- 面向新手的Web服务器搭建(一)——IIS的搭建
很多童鞋说自己是做移动开发的,想挂个简单的Web API,可是服务器又不会搭,这样一来测试就成了问题.看看网上的教程,发现略难懂,而且大多是一个转一个,没价值,所以干脆写几篇文章讲讲简单的Web服务器 ...
- Apache与Nginx的优缺点比较
1.nginx相对于apache的优点: 轻量级,同样起web 服务,比apache 占用更少的内存及资源 抗并发,nginx 处理请求是异步非阻塞的,而apache 则是阻塞型的,在高并发下ngin ...
随机推荐
- Vue-router重修02
1.权限控制 例如:登录后登录前的页面不一样 借助路由元信息完成 一个示例: <!DOCTYPE html> <html lang="en"> <he ...
- 数位dp-Bomb
难受啊!!越做题是越感觉菜,这个又被几个坑给卡住了(只有我这个学渣才会卡) 坑点:1.考虑n是否已包含49,有的话还要再+1. 2, 注意从最高开始考虑时,再判断时要考虑它本身为0的情况,.比如n=5 ...
- Java Fileupload
fileupload FileUpload 是 Apache commons下面的一个子项目,用来实现Java环境下面的文件上传功能,与常见的SmartUpload齐名. 组件 1.FileUpLoa ...
- sublime No packages available for installation
package control user-setting 中添加: "channels": [ "C:\\channel_v3.json" ], channel ...
- typescript之初学习
ts的优势: 支持ES6规范 强大的IDE支持(类型检测.语法提示.重构等) Angular的开发语言 ts的新特性: 一.字符串 1.多行字符串,使用反引号`` 2.字符串模板,使用表达式传入变量和 ...
- 串口RS232和485通信的波形分析
一.串行数据的格式 异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1 位,数据位可以是5.6.7.8位,停止位可以是1.1.5.2位. 起始位是一个值为0的位,所以对于正逻辑的TTL电平 ...
- js-day06-jQuery事件和DOM操作-练习题
jQuery事件绑定 js中绑定事件,三种方式: 方式1: 直接在元素上,增加onXxx事件属性. <button onclick="alert(1);">点我< ...
- HTML标题 段落 样式
HTML 标题 标题(Heading)是通过 <h1> - <h6> 等标签进行定义的. <h1> 定义最大的标题.<h6> 定义最小的标题. 注释:默 ...
- java byte 梳理
最近写编解码的代码比较多,抽一点时间梳理下java下byte的解析.在例子代码中主要涉及的知识点就两块: 1.byte代表8个bit,其中最高位是符号位: 2.当我们用String类的getBytes ...
- Spring Cloud 微服务架构全链路实践
阅读目录: 1. 网关请求流程 2. Eureka 服务治理 3. Config 配置中心 4. Hystrix 监控 5. 服务调用链路 6. ELK 日志链路 7. 统一格式返回 Java 微服务 ...