Nginx简介
Nginx是一个高性能的HTTP和反向代理服务器,特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有: 百度、京东、新浪、网易、腾讯、淘宝等。
Nginx可以作为静态页面的web服务器,同时支持CGI协议的动态语言,比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50000个并发连接数。
反向代理
1.正向代理: 在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
2.反向代理: 我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。
负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度。降低原来单个服务器的压力。
Nginx常用命令
1.使用nginx操作命令前提条件:必须进入nginx的目录 /usr/local/nginx/sbin
2.查看nginx版本号: ./nginx -v
3.启动nginx:
(1) ps -ef | grep nginx 先查看状态
(2) ./nginx -s stop // 关闭nginx
(3) ./nginx // 启动
4.关闭nginx: ./nginx -s stop
5.重新加载nginx: ./nginx -s reload
Nginx 配置文件
- 配置文件位置:
cd /usr/local/nginx/conf/nginx.conf
-
配置文件有三部分组成:
全局块:
从配置文件开始到events块之间的内容,主要会设置一些影响nginx服务器整体运行的配置指令。比如: worker_processes 1; // worker_processes 值越大,可以支持的并发处理量也越多
image.png
events块:
events块涉及的指令主要影响Nginx服务器与用户的网络链接。比如 worker_connections 1024; // 支持的最大连接数
image.png
http块:
Nginx服务器配置中最频繁的部分
http块也可以包括http 全局块,server 块
image.png
image.png
Nginx原理
1. master 和 workers机制
对于每个worker进程来说,独立的进程,还需要加锁,所以省掉了锁带来的开销,同时在编程以及问题查找时,也会方便很多;
采用独立的进程,可以让互相之间不会影响,一个进程退出后,其他进程还在工作,服务不会中断,master进程则很快启动新的worker进程。当然,worker进程的异常退出,肯定是程序有bug了,异常退出,会导致当前worker上的所有请求失败,不过不会影响到所有请求,所以降低了风险。
image.png
2. worker如何进行工作的
image.png3. 一个master 和 多个worker的好处
可以使用nginx -s reload 热部署
每个worker是独立的进程,如果有其中的一个worker出现问题,其他worker独立的继续进行争抢,实现请求过程,不会操作服务中断
4. 设置多少个worker合适
worker数和服务器的cpu数相等是最为适宜的
5. 连接数worker_connection
发送请求,占用2或4个连接数
nginx有一个master,有四个worker,每个worker支持最大的连接数1024,支持的最大并发数是:
1.普通的静态访问最大并发数是:worker_connections * worker_processes/2
2.而如果是HTTP作为反向代理来说,最大并发数量应该是worker_connections * worker_processes/4
网友评论