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;
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App