负载均衡配置模块
一:ngx_http_upstream_module — upstream
1.作用:实现不同调度功能
1) 轮询分配请求(平均)
说明:每台web主机访问的次数相同
配置:
upstream zhangsb {
server 10.0.0.8:80;
server 10.0.0.7:80;
server 10.0.0.9:80;
}
2) 权重分配请求(能力越强责任越重)
说明:谁的权重大,谁的访问次数就多
配置:
upstream oldboy {
server 10.0.0.7:80 weight=3;
server 10.0.0.8:80 weight=2;
server 10.0.0.9:80 weight=1;
}
3)实现热备功能
说明:作为备用,设置之后不会访问该服务器
upstream oldboy {
server 10.0.0.7:80;
server 10.0.0.8:80;
server 10.0.0.9:80 backup;
}
4)定义最大失败次数
配置:
max_fails=5
5)定义失败之后重发的间隔时间
配置:
fail_timeout=10s --会给失败的服务器一次机会
6)设置限制与代理服务器同时活动的最大连接数
配置:
max_conns=0 --意味着没有限制,没设置默认就是0
6)设置永不可用,宕机
配置:
server 127.0.0.1:8081 down;
7)确保来自同一客户端的请求始终传递到同一服务器
upstream zhangsb {
ip_hash;
server 10.0.0.8:80;
server 10.0.0.7:80;
server 10.0.0.9:80;
}
2.实现不同调度算法
1. rr 轮询调度算法
2. wrr 权重调度算法
3. ip_hash 算法 (出现反复登录的时候)
4. least_conn 根据服务器连接数分配资源
二:ngx_http_proxy_module
1.proxy_pass
location / {
proxy_pass http://zhangsb;
}
设置代理理服务器?的协议(http)和地址(域名或者IP地址)以及应映射位置
PS:proxy_pass后面的路径不带uri时,其会将location的uri传递给后端主机;
proxy_pass后面的路径是一个uri时,其会将location的uri替换为proxy_pass的uri;
(uri为域名后面的路径)
2.proxy_set_header
a.实现访问不同的网站地址,显示不同的网站页面
proxy_set_header Host $host;
配置步骤:
a).修改配置文件
[root@lb01 conf.d]# vim lb.conf
upstream zhangsb {
server 10.0.0.8:80;
server 10.0.0.7:80;
server 10.0.0.9:80;
}
server {
listen 80;
server_name www.zhangsb.com;
location / {
proxy_pass http://zhangsb;
proxy_set_header Host $host;
}
}
server {
listen 80;
server_name bbs.zhangsb.com;
location / {
proxy_pass http://zhangsb;
proxy_set_header Host $host;
}
}
server {
listen 80;
server_name blog.zhangsb.com;
location / {
proxy_pass http://zhangsb;
proxy_set_header Host $host;
}
}
b)在主机文件hosts中加入bbs.zhangsb.com,blog.zhangsb.com
c)测试
b.实现访问网站用户地址信息分析统计
proxy_set_header X-Forwarded-For $remote_addr;
a)修改配置文件
在每一个server下面添加上面一行配置信息
b)查看日志
tail -f /var/log/nginx/access.log
可以从日志文件里面看到访问主机的详细信息
3.proxy_connect_timeout
定义与后端服务器?建?立连接的超时时?长,如超时会
出现 502 错误,默认为60s,?一般不不建议超出75s
4.proxy_send_timeout
将请求发送给后端服务器?的超时时?长;默认为60s
5.proxy_read_timeout
等待后端服务器?发送响应报?文的超时时?长, 默认为60s
6.proxy_cache_path
proxy_cache_path /data/nginx/cache;
设置缓存的路路径和其他参数
7.proxy_cache
proxy_cache proxycache;
指明调?用的缓存,或关闭缓存机制
8.proxy_cache_valid
proxy_cache_valid 200 302 301 1h;
proxy_cache_valid any 1m;
对特定响应码的响应内容的缓存时?长定义
9.proxy_next_upstream
当访问页面出现错误时,可以优雅显示
proxy_next_upstream error timeout http_404 http_502 http_403;