Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。
Nginx专为性能优化而开发,性能是其重要的考量,实现上非常注重效率,能经受高负载的考验,能支持高达50000个并发连接数
个人理解:"正向代理"是代理客户端(浏览器)的,"反向代理"是代理服务器的
负载均衡
单个服务器解决不了,我们增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器,也就是我们所说的负载均衡。
动静分离
查看nginx版本号
启动nginx
关闭nginx
[root@centos sbin]# pwd /usr/local/nginx/sbin [root@centos sbin]# ./nginx -v nginx version: nginx/1.14.2 [root@centos sbin]# ./nginx -s stop [root@centos sbin]# ps -ef|grep nginx root 2397 2266 0 17:49 pts/0 00:00:00 grep nginx [root@centos sbin]# ./nginx [root@centos sbin]# ps -ef|grep nginx root 2399 1 0 17:49 ? 00:00:00 nginx: master process ./nginx nobody 2400 2399 0 17:49 ? 00:00:00 nginx: worker process root 2402 2266 0 17:49 pts/0 00:00:00 grep nginx [root@centos sbin]# ./nginx -s reload
组成:
全局块:
从配置文件开始,到events块之间的内容,主要设置一些影响nginx服务器整体运行的配置指令
例如:worker_processes 1; 值越大,可以支持的并发处理量也越多
events块:
主要配置影响Nginx服务器与用户的网络连接
例如:worker_connections 1024; 支持的最大连接数
http块
配置最频繁
1个master:管理、监控
1个或多个worker:执行
客户端请求master时,worker来争抢请求
问题1:一个master和多个worker的好处
问题2:设置多少个worker合适
底层采用io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程,通过异步非阻塞的方式来处理请求,即使是上万个请求也不在话下,每个worker的线程可以把一个cpu的性能发挥到极致,所以worker数和服务器的cup数相等时最为适宜。设少了浪费cpu,多了造成cpu频繁切换上下文带来的损耗。
问题3:发送一个请求,占用worker几个连接数?
2个或4个。
访问静态资源时,nginx找到静态资源服务器,把资源直接返回,占用2个连接;
访问动态资源,nginx访问tomcat,就占用4个连接。
问题4:nginx有1个master,6个worker,每个worker支持最大连接数是1024,支持最大并发数是多少?
若全都访问静态资源,最大并发=worker_connections*worker_process/2 (1024*6/2)
若全都访问动态资源,最大并发=worker_connections*worker_process/4 (1024*6/4)
原文:https://www.cnblogs.com/ddstudy/p/12562941.html