1. 概念
nginx是一个高性能的HTTP与反向代理服务器。它占用内存小,并发能力强,支持5w个并发连接。
2. 反向代理
正向代理:代理客户端,相当于桥梁,客户端通过代理服务器访问服务端,需要对客户端进行配置访问代理服务器。
反向代理:代理服务器,相当于选择开关,反向代理服务器选择服务器拿到数据再返回给客户端,客户端不需要做任何配置
3. 负载均衡
将原本发送到单一服务器的请求发送给nginx,并在多个服务器之间做选择,实现服务器集群的并发。
将请求在服务器之间作平均分配,降低单个服务器的负载。
![14833822-d75e62a751c78116.png](https://i-blog.csdnimg.cn/blog_migrate/c62c44a9f410a6d7430137d9d03752a1.png)
负载均衡
4.动静分离
tomcat中静态资源:html,css,js
tomcat中动态资源:jsp,servlet
在两台tomcat服务器中分别部署静态与动态资源,通过nginx反向代理做选择。
![14833822-c5fbc7b1df565429.png](https://i-blog.csdnimg.cn/blog_migrate/5a2d27204a6514b3de2aceb2419a7716.png)
动静分离
5. nginx配置
cd /usr/local/nginx/sbin/
#开始运行,访问时记得开放防火墙端口
./nginx
#nginx配置
cd /usr/local/nginx/conf/
vim nginx.conf
5.1 全局块
#表示nginx处理的并发数量
worker_process 1;
5.2 events块
#影响nginx服务器与用户的网络连接
#最大连接数
work connection 1024;
5.3 http块
5.3.1http全局块
5.3.2server块
server {
#nginx暴露给客户端的端口
listen 80;
#主机名称
server_name;
}
6.nginx常用命令
#先进去nginx目录
cd /usr/local/nginx/sbin/
#查看nginx版本号
./nginx -v
#启动nginx
./nginx
#关闭nginx
./nginx -s stop
#重加载nginx
./nginx -s reload
7. 实现反向代理
7.1 安装tomcat(8080)
cd /tomcat/bin/
./startup.sh
#开放端口
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --add-port=80/tcp --permanent
firewall-cmd -reload
firewall-cmd --list-all
![14833822-4afa1065ff6194b8.png](https://i-blog.csdnimg.cn/blog_migrate/3d05c9029a258b641150fbd391dc179b.png)
反向代理
7.2 修改nginx.conf
server {
#nginx暴露端口
listen 80;
#暴露ip
server_name 192.168.17.129;
location / {
root html;
#被代理ip:port
proxy_pass http://127.0.0.1:8080;
}
}
server {
#nginx暴露端口
listen 80;
#暴露ip
server_name 192.168.17.129;
检测到edu做如下跳转
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
检测到vod做如下跳转
loaction ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
正则表达式
= 相等
~包含
~*包含且不区分大小写
8. 负载均衡
分配策略
- 轮询(默认)
每个请求按时间顺序自动分配,服务器宕机自动剔除。 - 权重
根据权重进行分配
server 192.168.17.129:8080 weight=5;
server 192.168.17.129:8081 weight=10;
- ip_hash
让用户指定访问一台服务器
upstream myserver {
ip_hash;
server 192.168.17.129:8080;
server 192.168.17.129:8081;
}
4.fair
根据请求的响应时间进行分配
upstream myserver {
server 192.168.17.129:8080;
server 192.168.17.129:8081;
}
简单实现
upstream myserver {
server 192.168.17.129:8080;
server 192.168.17.129:8081;
}
server {
listen 80;
server_name 192.168.17.129;
location / {
root html;
proxy_pass http://mysrver;
}
}
9. 动静分离
server {
#nginx暴露端口
listen 80;
#暴露ip
server_name 192.168.17.129;
location /image/ {
#静态文件路径
root /data/;
#列出文件目录
autoindex on;
}
location /www/ {
#静态文件路径
root /data/;
#列出文件目录
index.html;
}
}
10. 高可用
定义:利用主nginx服务器与备份nginx服务器保证后台的高可用性。主服务器宕机会自动切换到备份服务器。
![14833822-6970e6abab8241ce.png](https://i-blog.csdnimg.cn/blog_migrate/99d2ae0f297165197713e8c3aaba033f.png)
高可用
- 在两台服务器上安装nginx
- 在两台服务器上安装keepalived
yum install keepalived -y
- 修改配置
vi /etc/keepalived/keepalived.conf
#全局配置
smtp_sever 192.168.17.129 #nginx地址
smtp_connect_timeout 30 #nginx超时时间
router_id LVS_DEVELBACK #是主机hosts配置的地址
#脚本配置
interval 2 #脚本检测时间间隔
weight -20 #脚本条件成立时降低权重
#虚拟ip配置
state MASTER/BACKUP #主/从
interface ens33 #网卡名
priority 100/90 #主从优先级
virtual_ipaddress {
192.168.17.50 虚拟ip地址
}
4.启动主从nginx,启动主从keepalived
./nginx
systemctl start keepalived.service
11. nginx 原理
-
工作模式
master-worker -
worker
worker - master-worker好处
(1)可以进行热部署:nginx -s reload
(2)每一个worker是一个独立的进程,不用加锁,可以保证服务不会中断。 - worker数量设置
io多路复用(linux中),每个worker进程可以把cpu发挥到极致,worker数量与cpu数量相等时最理想的状态。 - worker连接数
一个请求占用worker的2个连接数(静态资源)或四个连接数(动态资源访问tomcat)。