nginx负载均衡配置
1.nginx
nginx一款轻量级web服务器,反向代理服务器及电子邮件代理服务器,其有功能多,占用资源少,并发处理能力高的优点。他有以下用途:
- 反向代理
- 负载均衡
- http服务器(动静分离)
- 正向代理
2.nginx常用命令
版本查看: nginx -v /-V(含编译版本) 快速关闭nginx :nginx -s stop 平稳关闭nginx : nginx -s quit nginx启动后进程id位置: logs/nginx.pid nginx 配置文件位置|(默认启动文件位置):conf/nginx.conf 自定义指定启动位置(-c参数): nginx -c xx/conf/xxx.conf 验证配置文件语法是否正确(-t -c):nginx -t -c xx/conf/xxx.conf 重新加载配置文件(文件修改变动后):nginx -s reload
3、conf配置文件主要参数
# 主要通过http块中参数upstream、server块进行配置 upstream,负载均衡配置,后面的名称与proxy_pass后参数对应。(名称可以随意写) 括号里面配置分发的服务器地址~ # server块中location块配置反向代理和监听端口等 proxy_pass:后端代理服务器的地址(域名或ip地址和端口等), proxy_set_header:请求头设置(传给服务端)。
4、实现负载均衡例子
将请求分发到多台机器,共同完成任务,一般结合反向代理使用,通过反向代理跳转到负载均衡~
实现方式(负载均衡策略)有:轮询(默认),权重,ip_hash,fair第三方等等。
先准备2台机器,负载均衡相关配置
upstream web_server { server 139.159.247.191:8090; server 116.62.203.159:8090; } server { listen 81; server_name localhost; client_max_body_size 1024M; #charset koi8-r; access_log logs/host.access.log; location / { proxy_pass http://web_server; proxy_set_header Host $host:$server_port; }
1) RR轮询,按请求时间顺序逐一轮询分配到对应服务器,若某台服务器宕机,则自动剔除~
轮询配置如上面所示,浏览器端访问效果如下:
2)权重 ,指定应用服务器访问权重比例,后端服务器性能不均时指定访问比例(通过weight控制)
upstream web_server { server 139.159.247.191:8090 weight=5; server 116.62.203.159:8090 weight=2; }
3)ip_hash(依据ip分配,nginx自带策略):根据客户端过来的ip进行hash处理,同一ip的分发给同一台服务器,可以解决session不能跨服务器的问题。
upstream web_server { ip_hash; server 139.159.247.191:8090; server 116.62.203.159:8090; }
4) fair(第三方), 按后端服务器响应时间分配,响应时间短优先分配
upstream web_server { fair; server 139.159.247.191:8090; server 116.62.203.159:8090; }
5、 nginx应用场景
1)动静分离场景:将动态资源和静态资源分别部署在不同的应用服务器,通过负载均衡加反向代理处理动态资源,通过路由匹配规则处理静态资源实现动静分离。加快解析的速度,降低单个服务器的压力。
2)同一网站多个app配置:针对各个模块配置反向代理+负载均衡+路由配置。路由定位到对应的模块访问地址,地址通过反向代理实现负载均衡指向不同的应用服务器实现访问。