Nginx 是一个高性能的 HTTP 和 反向代理服务器,同时也提供了 IMAP/POP3/SMTP服务
负载均衡
为了避免服务器崩溃,让用户有更好的体验,我们通过负载均的方式来分担服务器的压力 我们可以建立很多服务器,组成一个服务器集群,当用户访问网站时,先访问一个中间服务器,中间服务器会在服务器集群中选择一个压力较小的服务器,将请求引入该服务器
负载均衡几种常用的方式:
- 轮询(默认):每个请求按照时间顺序逐一分配到不同的服务器,如果服务器down掉,能自动剔除
weight: weight 代表权重,默认为1,权重越高,被分配的客户端越多
upstream myserver {
server ip:port weight=5;
server ip:port weight=10;
}
ip_hash: 每个请求按照ip的 hash 结果分配,这样每个访问客户固定访问一个后端服务器,可以解决session问题
upstream myserver {
ip_hash
server ip:port;
server ip:port;
}
fair(第三方): 按照后端服务器的响应时间分配请求,相应时间断的优先分配
upstream myserver {
server ip:port;
server ip:port;
fair
}
http {
upstream myserver {
server ip:port;
server ip:port;
}
server {
location / {
#...
proxy_pass http://myserver;
proxy_connect_timeout 10;
}
}
反向代理
反向代理就是请求统一被 Nginx 接受,然后按照一定的规则分发给后端的业务处理服务器进行处理
http {
#...
server {
#...
location /api {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://${backend};
}
#...
}
}
Nginx 配置文件主要有3部分:
- 全局块:从配置文件的开始到 events 块之间的内容,主要设置一些影响 nginx 服务器整体运行的配置指令
- worker_process 1; work_process 值越大,可支持的并发处理量也越多
- event块:主要影响 Nginx 服务器与用户的网络连接数
- 比如 worker_connections 1024; 支持的最大连接数
- HTTP块:Nginx 服务器中最频繁的部分
- http 全局块:
- server 块:虚拟主机