Nginx简介
概述
- 一个高性能的HTTP和反向代理web服务器
- 特点是占有内存少,并发能力强
- 专为性能优化而开发
反向代理
- 正向代理
在客户端(浏览器)配置代理服务器,通过代理服务器进行互联网访问
2. 反向代理
把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端
此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址
负载均衡
动静分离
为了加快网站的解析速度,可以把动态页面和静态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力
Nginx安装
防火墙命令
systemctl status firewalld
systemctl stop firewalld
firewall-cmd --list-all
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
docker安装
# 最好先复制html跟conf.d里面的和nginx.conf
docker run --name nginx01 -d -p 80:80 -v /home/dockerusr/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/dockerusr/nginx/conf.d:/etc/nginx/conf.d -v /home/dockerusr/nginx/logs:/var/log/nginx -v /home/dockerusr/nginx/html:/usr/share/nginx/html nginx
docker下Nginx命令
# /usr/sbin 路径下
# 查看版本
./nginx -v
# 开启、关闭、重新加载
./nginx
./nginx -s stop
./nginx -s reload
Nginx配置文件
- 全局块(从开始到event之间)
# 可以支持的并发处理量,越大可处理的越多
worker_processes 1;
- events块
射击的指令主要影响Nginx服务器与用户的网络连接
events {
# 最大连接数
worker_connections 1024;
}
- http块
代理,缓存和日志定义等绝大多数功能和第三方模块的配置都在这里
包含全局块和server块
Nginx原理
master 和 worker
- 原理图
- 工作过程
3. 一个master对应多个worker的好处
- 可以使用nginx -s reload 热部署(worker分开加载)
- 对于每个worker进程来说,都是独立的进程,不需要加锁,省掉锁带来的开销
需要设置多少个worker
- 多路复用
- Nginx同redis类似都采用了io多路复用机制,每个worker都是一个独立的进程,但每个进程里只有一个主线程
- 通过异步非阻塞的方式来处理请求
- 每个worker的线程可以把一个cpu的性能发挥到极致
- 所以
worker数和cpu数相等是最为适宜的
- 设置
连接数worker connection
- 发送一个请求,占用了worker的几个连接数
2个或者4个
- nginx有一个master,有4个(worker_processes)worker,每个worker支持最大的连接数是1024,则支持最大的并发数是多少
10244 /2 || 10244 /4
普通的静态访问最大并发数:worker_connectionsworker_processes/2
HTTP作为方向代理来说,最大并发数:worker_connectionsworker_processes/4