nginx(http, upstream)

1.proxy_http_version

设置代理的http协议版本,默认为http1.0,可选值为: 1.0 | 1.1

upstream http_backend {
    server 127.0.0.1:8080;
    keepalive 16;
}
server {
    # 针对ws协议进行升级处理
    location ~* /sms/.*\.(flv|hls)$ {
        proxy_pass http://192.168.52.100:10000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # 保持连接,和upstream连用居多
    location /test/ {
        proxy_pass http://http_backend;
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        ...
    }
}

Syntax: keepalive connections;
image

2. upstream

upstream http_backend {
    ip_hash; # 表示采用iphash进行负载
    # hash key [consistent]; # 针对指定的key进行hash负载均衡,key可以字符串,变量或则混合;consistent表示是否采用一致性hash,这个主要针对server发生变化之后
    server 192.168.52.100:8080;
    server 192.168.52.102:8080;
    server 192.168.52.102:8080 max-fails=3 fail_timeout=10s;
    keepalive 16;
}

Nginx基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。
upstream指令

  • max_conns:限制最大同时连接数 1.11.5之前只能用于商业版
  • slow_start:单位秒,权重在指定时间内从1上升到指定值,不适用与hash负载均衡、随机负载均衡 如果在 upstream 中只有一台 server,则该参数失效(商业版才有)
  • down:禁止访问
  • backup:备用机 只有在其他服务器无法访问的时候才能访问到 不适用与hash负载均衡、随机负载均衡
  • max_fails:表示失败几次,则标记server已宕机,剔出上游服务 默认值1
  • fail_timeout:表示失败的重试时间 默认值10

配置示例

# 加权轮询
upstream [proxyName] {
    server 192.168.1.173:8080 weight=1;
    server 192.168.1.174:8080 weight=5;
    server 192.168.1.175:8080 weight=2;
    keepalive 32; #保持的连接数
}
# 最小连接
upstream [proxyName] {
    least_conn;
    server 192.168.1.173:8080;
    server 192.168.1.174:8080;
    server 192.168.1.175:8080;
}
# url hash
upstream [proxyName] {
    hash $request_url;
    server 192.168.1.173:8080;
    server 192.168.1.174:8080;
    server 192.168.1.175:8080;
}
# ip hash
upstream [proxyName] {
    ip_hash
    server 192.168.1.173:8080;
    server 192.168.1.174:8080;
    server 192.168.1.175:8080;
}
upstream backend{
	server 192.168.200.146:9001 down;
	server 192.168.200.146:9002 backup;
	server 192.168.200.146:9003;
}

3. 参考

[1] nginx官网http://nginx.org/en/docs/http/ngx_http_upstream_module.html#ntlm

posted @ 2022-07-20 18:09  理舞  阅读(384)  评论(0编辑  收藏  举报