龙空技术网

Nginx 反向代理及负载均衡实践

运维技术帮 684

前言:

目前姐妹们对“nginx禁止git”都比较讲究,看官们都需要了解一些“nginx禁止git”的相关内容。那么小编也在网摘上汇集了一些关于“nginx禁止git””的相关资讯,希望各位老铁们能喜欢,咱们快快来了解一下吧!

概述Nginx 通过反向代理可以实现后端上游服务实例间的负载均衡, 将请求按照相应的负载均衡策略转发到不同的服务器上, 达到负载的效果, 避免了后端服务实例的单点故障; 目前Nginx 内置策略: rr, wrr, hash, ip_hash, least_connNginx 第三方模块支持的策略: fair, consistent_hash部署环境nginx-1.20.1CentOS Linux release 7.6.1810反向代理

1、Nginx 反向代理配置示例

upstream app1 {    server 192.168.31.13:8081 weight=5 max_fails=3 fail_timeout=15s;    server 192.168.31.17:8081 weight=5 max_fails=3 fail_timeout=15s;    server 192.168.31.12:80 max_conns=1000;}upstream app2 {    server 192.168.31.13:8082 weight=5 max_fails=3 fail_timeout=15s;    server 192.168.31.17:8082 weight=5 max_fails=3 fail_timeout=15s;    check interval=3000 rise=2 fall=5 timeout=1000 type=http;}server {    listen 80;    access_log   /var/log/nginx/access.80.log  main;    location /app1/ {        proxy_pass ;        proxy_set_header Host $host;    }    location /app2/ {        proxy_pass ;        proxy_set_header Host $host;    }}

2、配置项解析

weight=5;  # 设置服务器的权重,默认为 1fail_timeout=15s   # 请求失败超时时间,在经历了max_fails次失败后,该服务器暂停服务的时间max_fails=3 fail_timeout=15s;   # 请求失败的次数超过 3 次后, nginx 将在接下来的 15s 内不会向该服务器派发请求backup;  # 指定该服务器组的备份机,其它服务器全挂了,才会派发请求给该服务器down;   # 标识该服务器不可用max_conns=1000;   # 限制到代理服务器的最大同时活动连接数。默认为 0,表示不限制; 如果服务器组不驻留在共享内存中,则限制适用于每个工作进程keepalive 32;    # 每个工作进程缓存到上游服务器空闲保持连接的最大数量proxy_next_upstream error timeout http_502;  # 指定在哪种情况下将请求传递到下一个服务器
负载均衡策略rr

轮询(round robin)是 upstream 的默认分配方式,即每个请求按照时间顺序轮流分配到不同的后端服务器, 如果某个后端服务器 down 掉后,能自动剔除。

upstream backend {    server 192.168.31.101;    server 192.168.31.102;    server 192.168.31.103;}
wrr

权重轮询 weighted round-robin; 轮询的加强版,即可以指定轮询比率,weight 和访问几率成正比

upstream backend {    server 192.168.31.101 weight=3;    server 192.168.31.102 weight=2;    server 192.168.31.103 weight=5;}
url_hash

按请求 url 的 hash 值来分配请求,使每个 url 定向到同一个后端服务器, 为了使得缓存命中率提高,很适合使用 url_hash 策略 1.7.2 版本以后,url_hash 模块已经集成到了 nginx 源码当中,不需要单独安装。之前的版本仍需要单独安装,下载地址:;

upstream tomcats {    hash $request_uri;    # hash $request_uri consistent;   # url 一致性 hash    server 192.168.31.100;    server 192.168.31.101;    server 192.168.31.102;}
ip_hash

每个请求按访问 IP 的哈希结果分配,使来自同一个 IP 的访客固定访问一台后端服务器,并且可以有效解决动态网页存在的 session 共享问题

upstream backend {    ip_hash;    server 192.168.31.101;    server 192.168.31.102;    server 192.168.31.103;}
least_conn

将请求分配给活动连接数最少的服务器

upstream backend {    least_conn;    server 192.168.31.101;    server 192.168.31.102;    server 192.168.31.103;}
fair

根据服务器的响应时间来分配请求,响应时间短的优先分配,即负载压力小的优先会分配

# 部署git clone  --add-module=/root/src/nginx-upstream-fair-mastermake -j2  && make install# 版本问题:如果使用的 Nginx 版本 >= 1.14.0 时,使用上述模块源码编译时会报错误,需要对源码做一些修改,参考: nginx 配置upstream tomcats {    fair;    server 192.168.31.100;    server 192.168.31.101;    server 192.168.31.102;}
consistent_hash一致性哈希算法, 需要 ngx_http_upstream_consistent_hash 模块支持consistent_hash $remote_addr:可以根据客户端 ip 映射consistent_hash $request_uri: 根据客户端请求的 uri 映射consistent_hash $args: 根据客户端携带的参数进行映射
# 部署wget  master.zip./configure  --add-module=/root/src/ngx_http_consistent_hash-mastermake && make install# nginx configupstream tomcats {    consistent_hash $request_uri;    server 192.168.31.100;    server 192.168.31.101;    server 192.168.31.102;}

标签: #nginx禁止git