nignx这么火,确定不来看看_

中小型静态web服务的主流,web服务器中的老大哥。","marks":[]}]}],"state":{}},{"type":"block","id":"4a7Y-92","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"qIJk-91","leaves":[{"text":"2、nginx-->大型新兴网站静态web服务主流。","marks":[]}]}],"state":{}},{"type":"block","id":"IXLR-94","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"1w7N-93","leaves":[{"text":"3、lighttpd -->静态web服务不温不火,逐渐被淘汰。","marks":[]}]}],"state":{}},{"type":"block","id":"RPgH-96","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"ULvH-95","leaves":[{"text":"静态效率高","marks":[]}]}],"state":{}},{"type":"block","id":"E39P-98","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"T2GO-97","leaves":[{"text":"动态服务:","marks":[]}]}],"state":{}},{"type":"block","id":"57vm-00","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"WjDe-99","leaves":[{"text":"1、IIS-->微软的web服务器(asp,.aspx)","marks":[]}]}],"state":{}},{"type":"block","id":"WMUH-02","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"EQ0d-01","leaves":[{"text":"2、tomcat-->中小企业动态web服务主流,互联网java容器主流(jsp,do)","marks":[]}]}],"state":{}},{"type":"block","id":"0MPG-04","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"H7za-03","leaves":[{"text":"3、resin-->大型动态web服务主流,互联网java容器主流(jsp,do)","marks":[]}]}],"state":{}},{"type":"block","id":"SeMg-06","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"UpOV-05","leaves":[{"text":"4、php(fcgi)-->大中小网站,php程序的解析容器。","marks":[]}]}],"state":{}},{"type":"block","id":"4M73-08","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"kqt4-07","leaves":[{"text":"\ta.配合apache,php不是守护进程,而是mod_php5.so(module)","marks":[]}]}],"state":{}},{"type":"block","id":"A4XG-10","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"T3xM-09","leaves":[{"text":"\tb.配合nginx,lighttpd,php守护进程模式,fcgi模式。","marks":[]}]}],"state":{}}]" style="visibility: visible; margin-bottom: 0em;">

主流web服务

一般以lamp/lnmp方式部署web服务器

tips:(l——linux,a——apache,n——nginx,m——mysql,p——php)

静态服务:

1、apache -->中小型静态web服务的主流,web服务器中的老大哥。

2、nginx  -->大型新兴网站静态web服务主流。

3、lighttpd -->静态web服务不温不火,逐渐被淘汰。

静态效率高

动态服务:

1、IIS  -->微软的web服务器(asp,.aspx)#只能用于windows系统的服务器

2、tomcat  -->中小企业动态web服务主流,互联网java容器主流(jsp,do)

3、resin  -->大型动态web服务主流,互联网java容器主流(jsp,do)

4、php(fcgi)-->大中小网站,php程序的解析容器。

a.配合apache,php不是守护进程,而是mod_php5.so(module)

b.配合nginx,lighttpd,php守护进程模式,fcgi模式。

5、nginx加node.js的方式,通过node处理动态资源,上周和程序员朋友聊到这一点,后期计划做一个demo在更新。

这次只分享一下nginx,其他的后面排期更新,

Nginx

简介

Nginx是一款轻量级的Web服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,

在nginx中配置https,必须安装ssl模块http_ssl_module,

nginx一般在主流技术中的部署位置,

特点

动静分离

把静态资源放到Nginx上,由Nginx管理,动态请求转发给后端,比如tomcat服务器等,

ip访问控制

在Nginx这一层,做处理,内置一个黑名单模块,就不需要等请求通过Nginx达到后端在进行拦截,直接在Nginx这一层进行处理,

热部署

配置文件nginx.conf修改后,不需要stop Nginx,不需要中断请求,就能让配置文件生效!(nginx -s reload 重新加载/nginx -t检查配置/nginx -s stop)

Nginx架构

Master进程的作用

读取并验证配置文件nginx.conf;管理worker进程,接收来自外界的信号,向各worker进程发送信号,监控worker进程的运行状态,当worker进程退出后(异常情况下),会自动重新启动新的worker进程。

Worker进程的作用

每一个Worker进程都维护一个线程(避免线程切换),处理连接和请求;Worker进程的个数由配置文件决定,一般和CPU个数相关(有利于进程切换),配置几个就有几个Worker进程,它们同等竞争来自客户端的请求,各进程互相之间是独立的。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。

配置文件结构

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

下图是一个例子,仅供参考

解释一下文中提到的惊群和epoll事件模型

惊群现象:一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能,

epoll模型:epoll模型基于事件驱动机制,它可以监控多个事件是否准备完毕,如果没问题,会把事件放入epoll队列中,这个过程是异步的。worker只需要从epoll队列循环处理即可,类似于消息中间件的作用。

反向代理

在location这一段配置中的root替换成proxy_pass即可。root说明是静态资源,可以由Nginx进行返回;而proxy_pass说明是动态请求,需要进行转发,比如代理到Tomcat上,

负载均衡

通过upstream来定义一组Tomcat,并指定负载策略(IPHASH、加权轮询、轮询),健康检查策略(Nginx可以监控这一组Tomcat的状态)等,或者将proxy_pass替换成upstream指定的值即可

对几种轮询算法提供流程供大家理解

经验有限,如有不对之处,恳请指出。