常用的 web 服务器简介
Web 服务器也称为 WWW (WORLD WIDE WEB)服务器、HTTP 服务器,主要功能是提供网上信息浏览服务。
Unix 和Linux 平台下的常用 Web服务器有 Apache、 Nginx Lightpd 、Tomcat等,其中应用最广泛的是 Apache。
nginx特性:
1.反向代理:
真实的服务器不能被外部网络直接访问 ,所以需要一台代理服务器,它不仅可以被外部网络直接访问也同时跟真实服务器在同一个网络坏境,也可以是同一台服务器的不同端口。
2.负载均衡:
nginx常用的一个功能,就是分摊到多个操作单元上执行,例如:web服务器,FTP服务器等从而共同完成任务。
简单来说:就是当有两台或者两台以上的服务器,根据规则或者随机分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡 ,目前nginx支持自带三种负载均衡策略,还有两种常用的第三方策略
负载均衡通过upstream指令来实现。
3.动静分离:
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源 分开,动静资源做好了拆分后 就可以根据静态资源的特点将其做缓存操作 ,这就是网页静态化处理的核心思路
目录
nginx原理:
1.在nginx 启动后,会有一个master进程和多个worker进程,master进程主要用来管理worker进程,包括:接受信号,将信号分发给worker进程,监听worker进程工作状态,当worker进程退出时(非正常),启动新的worker进程。
基本的网络事件会交给worker进程处理。多个worker进程之间是对等的,他们同等竞争来自客户端的请求,各进程互相之间是独立的 。一个请求,只可能在一个worker进程中处理,一个worker进程,不可能处理其它进程的请求。 worker进程的个数是可以设置的,一般我们会设置与机器cpu核数一致,原因与nginx的进程模型以及事件处理模型是分不开的 。
2.当master接收到重新加载的信号会怎么处理(./nginx -s reload)?
master会重新加载配置文件,然后启动新的进程,使用的新的worker进程来接受请求,并告诉老的worker进程他们可以退休了,老的worker进程将不会接受新的,老的worker进程处理完手中正在处理的请求就会退出。
3.worker进程是如何处理用户的请求呢?
由于worker进程之间是平等的,每个进程,处理请求的机会也是一样的。
当我们提供80端口的http服务时,一个连接请求过来,每个进程都有可能处理这个连接,那怎么做到的呢?
首先master会根据配置文件生成一个监听相应端口的socket,然后再faster出多个worker进程,这样每个worker就可以接受从socket过来的消息(其实这个时候应该是每一个worker都有一个socket,只是这些socket监听的地址是一样的)。当一个连接过来的时候,每一个worker都能接收到通知,但是只有一个worker能和这个连接建立关系,其他的worker都会连接失败,这就是所谓的惊群现在,为了解决这个问题,nginx提供一个共享锁accept_mutex,有了这个共享锁后,就会只有一个worker去接收这个连接。当一个worker进程accept这个连接之后,就开始读取请求,解析请求,处理请求,产生数据后,再返回给客户端,最后才断开连接。
五个特性:
1、热部署
在master管理进程与worker工作进程的分离设计,使的Nginx具有热部署的功能,那么在7×24小时不间断服务的前提下,升级Nginx的可执行文件。也可以在不停止服务的情况下修改配置文件,更换日志文件等功能。
2、可以高并发连接
这是一个很重要的一个特性!在这一个互联网快速发展,互联网用户数量不断增加,一些大公司、网站都需要面对高并发请求, 理论上,Nginx支持的并发连接上限取决于内存。
3、低的内存消耗
在一般的情况下,10000个非活跃的HTTP Keep-Alive 连接在Nginx中仅消耗2.5M的内存,这也是Nginx支持高并发连接的基础。
4、处理响应请求很快
在正常的情况下,单次请求会得到更快的响应。在高峰期,Nginx可以比其他的Web服务器更快的响应请求。
5、具有很高的可靠性
Nginx是一个高可靠性的Web服务器,选择Nginx的基本条件,现在很多的网站都在使用Nginx,高可靠性来自其核心框架代码的优秀设计、