nginx 反向代理 与 负载均衡
nginx 的三大作用
nginx 的三大作用分别是:http 静态资源服务器与虚拟主机、反向代理、负载均衡。
为什么要使用 nginx 来做http静态资源服务器呢?因为他性能优越,能更好的支持高并发连接,5万个/每秒。
http 静态资源服务器配置 以及虚拟主机
server {
listen 80;
server_name www.wlmqtc.com;
location / {
root html;
index index.html index.htm;
}
}
通常,使用 nginx 作为 http 静态资源服务器时,只需配置 server 段
的三个地方
- listen 监听端口
- server_name 域名或者IP
- location 下的 root 资源所在目录
注意 可以有多个 server 段
,所以,nginx 也可以用来做虚拟主机
反向代理配置
upstream myhost {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name www.wlmqtc.com;
location / {
proxy_pass http://myhost;
}
}
第一个问题, 什么是反向代理? 反向代理是相对于正向代理而言的。正向代理是面向客户端做代理,反向代理就是与之相反,是面向服务
端做代理。
反向代理时候,需要增加一个 upstream 段
,并为他取一个任意自定义的名字,例如,我为他取名 myhost ,同时指定一台被代理的主机即可
。
而后,在 location 中,注释或删除掉 root 和 index
,
最后,在 location 中,增加一个配置 proxy_pass http://myhost;
经过以上配置后,当客户端访问 http://www.wlmqtc.com 时,反向代理就会到上游主机中寻找资源(此处就是 127.0.0.1:8080 ),最终将资
源返回到客户端。
负载均衡配置
upstream myhost {
server 127.0.0.1:10080;
server 127.0.0.1:10010;
server 127.0.0.1:10086;
server 127.0.0.1:10087;
}
server {
listen 80;
server_name www.wlmqtc.com;
location / {
proxy_pass http://myhost;
}
}
负载均衡很简单,当 upstream 段
内包含多个主机时,将会自动启用默认策略(轮询)。
四种负载均衡策略
名称 | 策略 | 适用 |
---|---|---|
轮询 | 默认策略,依次访问所有主机 | |
weight | 加权策略,值越大被访问几率越大,默认值=1 | 适合各个主机配置差别较大时适用 |
ip_hash | IP区分策略 | 适合有状态服务,如:session |
least_conn | 最少连接策略 | 适合请求处理时间长短不一的情况 |
几个参数
参数 | 作用 | 默认值 |
---|---|---|
fail_time_out | 连接超时时间,与 max_fails 配合使用 | 10s |
max_fails | 最大失败次数,超出将被 down 。 | 1s |
backup | 备用主机,当其他主主机不可用时,访问这个 | |
down | 手动标记主机宕机 |
max_fails 补充说明: 在一个 fail_time_out 周期内,发生 max_fails 次失败 ,该主机将被标记为 down ,所有请求将不会转发到此
,只有到了下一周期才会重新启用此主机。
参数可以混用
# 多种参数策略可以混用
upstream myhost {
ip_hash;
least_conn;
server 127.0.0.1:10080 weight=2;
server 127.0.0.1:10010 backup;
server 127.0.0.1:10086 max_fails=3 fail_timeout=20;
server 127.0.0.1:10087 down;
}
其他注意:
ip_hash 策略是根据客户端 IP 分配主机的,每个客户端访问的主机是固定的,所以有一些需要注意的地方
- ip_hash 策略不能与 backup 同时使用
- ip_hash 策略必须手动对主机做宕机,即标记 down
评论已关闭