后面对这个配置的不同部分进行详细分析
负载均衡
nginx可以很简单的配置成http负载均衡服务器,对前端的请求进行转发
代码语言:javascript复制 upstream test_apps {
server x.x.x.x:80 max_fails=1 fail_timeout=10s weight=25;
server y.y.y.y:80 max_fails=1 fail_timeout=10s weight=25;
server x.x.x.x:80 max_fails=1 fail_timeout=10s weight=25;
server y.y.y.y:80 max_fails=1 fail_timeout=10s weight=25;
}
upstream 是nginx 负载均衡的主要模块,它提供了一个简单方法来轮询后端的服务器
server 使用于 upstream 环境,服务名称可以是一个域名,一个ip地址,ip地址加端口,也可以是UNIX Socket。
Item | Type | comment |
---|---|---|
max_fails | NUMBER | 参数fail_timeout指定的时间里允许对服务器请求失败的次数(默认为1) |
weight | NUMBER | 权重,值越高,被分配的请求数越多(默认为1) |
fail_timeout | TIME | 失效超时时间 |
down | - | 标记服务器离线 |
backup | - | 标记服务器,在所有非backup服务器宕机的时候才启用 |
反向代理
代码语言:javascript复制 location / {
proxy_pass http://test_apps;
proxy_set_header X-Forwarded-For $remote_addr;
}
状态检查
单纯轮询,其中一台出问题后,会影响一定比例请求的正常响应,加入检查模块就可以避免此问题
这个检查逻辑就是 ngx_http_upstream_check_module 模块提供的,如果使用官方版,需要额外编译加入此模块
代码语言:javascript复制 upstream test_apps {
server x.x.x.x:80 max_fails=1 fail_timeout=10s weight=25;
server y.y.y.y:80 max_fails=1 fail_timeout=10s weight=25;
server x.x.x.x:80 max_fails=1 fail_timeout=10s weight=25;
server y.y.y.y:80 max_fails=1 fail_timeout=10s weight=25;
check interval=5000 fall=5 rise=2 timeout=2000 default_down=false type=http;
check_http_send "HEAD /health_status HTTP/1.0rnrn";
check_http_expect_alive http_2xx http_3xx;
}