nginx 负载均衡
例如目前有两台服务器,一个nginx服务器,一个web服务器(例如tomcat),nginx负责把所有请求转发到web服务器
配置如下
server {
......
location / {
proxy_pass http://web1.example.com;
}
}
由于访问量增大,一台web服务器压力过大,想再添加一台,通过nginx的负载均衡设置来让这两台服务器一起工作
例如为新服务器指定域名:http://web2.example.com;
负载均衡的配置步骤
(1)添加服务器组
http {
......
upstream backend {
server web1.example.com;
server web2.example.com;
}
}
upstream 就是用来定义服务器组的,backend 是自己定义的服务器组名称,内部用server指定web服务器地址,地址可以是域名或者IP
upstream只能在http上下文中定义
(2)把请求转发给服务器组
修改原来server中的转发配置
server {
......
location / {
proxy_pass http://backend;
}
}
更多配置
nginx的负载均衡还有更丰富的配置,例如:
location / {
proxy_pass http://backend;
proxy_next_upstream http_500;
include /opt/nginx/conf/proxy.conf;
}
proxy_next_upstream 用来定义故障转移策略,当后端服务节点返回500错误时,自动将请求转发到upstream负载均衡组中的另一台服务器,实现故障转移
还可以指定多个错误类型,例如:
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
include 指令包含进来一个proxy.conf文件,这个文件可以复用,用来定义通用配置
常用内容:
#设置主机头和客户端真实地址,以便服务器获取客户端真实IP
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_body_buffer_size 128k; #指定客户端请求主体缓冲区大小
proxy_connect_timeout 90; #表示与后端服务器连接的超时时间,即发起握手等候响应的超时时间
proxy_send_timeout 90; #表示后端服务器的数据回传时间,即在规定时间之内后端服务器必须传完所有的数据,否则,Nginx将断开这个连接
proxy_buffers 4 32k; #设置缓冲区的数量和大小,Nginx从代理的后端服务器获取的响应信息,会放置到缓冲区
proxy_buffer_size 4k; #设置缓冲区大小,默认该缓冲区大小等于指令proxy_buffers设置的大小
proxy_busy_buffers_size 64k; #高负荷下缓冲大小
- R语言与点估计学习笔记(EM算法与Bootstrap法)
- 开发 | 为个人深度学习机器选择合适的配置
- 阿里音乐流行趋势预测竞赛数据清洗整合——纯python
- 生产环境sql语句调优实战第二篇(r2第38天)
- 生产环境sql语句调优实战第三篇(r2笔记38天)
- 简单易学的机器学习算法——K-Means算法
- 通过shell脚本定位性能sql和生成报告(r2笔记37天)
- VXFS启用异步IO导致的严重问题(r2笔记56天)
- 通过sql语句分析足彩(r2笔记55天)
- 关于验证表中有无数据的方法比较(r2笔记54天)
- 海量数据迁移之分区并行抽取(r2笔记53天)
- 海量数据迁移之外部表切分(r2笔记52天)
- 怎样突破表名30个字符的限制(r2笔记51天)
- C/C++——排序
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法