Nginx的反向代理与负载均衡

目录

Nginx 基本概念

正向代理与反向代理

正向代理

反向代理

负载均衡

内置负载策略

轮循(默认)

fair

url_hash

ip_hash


Nginx 基本概念


正向代理与反向代理

为了便于大家理解,先来了解一下基础知识,Nginx是一个高性能的方向代理服务器,那么什么是反向代理呢?

代理是在服务器和客户端之间假设的一层服务器,代理将接收客户端的请求并转发给服务器,然后把服务端的响应转发给客户端。
不管是正向代理还是反向代理,实现的都是上述功能。

正向代理

正向代理(forward)意思是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取的内容,客户端向代理发送一个请求,并指定请求目标(原始服务器),然后代理向原始服务器转交请求并将获取到的内容全部返回给客户端。
正向代理 视为我们服务的,也就是为客户端服务的,客户端可以根据正向代理方位到他们身无法访问的服务器资源。正向代理对我们是透明的,对服务器是非透明的,即服务器不知道自己接受的是来自代理的访问还是真实客户端的访问。

反向代理

反向代理(Reverse Proxy)是指代理服务器来接受internet上的链接请求,然后把请求转发给内部网络上的服务器。并将服务器上得到的结果返回给internet上请求链接的客户端,此时代理服务器岛外就表现为一个反向代理的服务器。
反向代理视为服务端服务的,可以帮助服务器接收来自客户端的请求,帮助服务器做请求转发和负载均衡等。
反向代理对付段是透明的,对客户端非透明,即客户端并不知道自己访问的是代理服务器,而服务器知道反向代理在为他服务。

负载均衡

如果请求数过大,单个服务器解决不了,我们增加服务器数量,然后将请求分发到各个服务器上,将原先的请求集中到单个服务器上的情况改为请求分发到多鞥服务器上就是负载均衡。
 

内置负载策略

轮循(默认)

http {

    # ... 省略其它配置

    upstream tomcats {
        server 192.168.116.13:8080;
        server 192.168.116.14:8080;
        server example.com:8080;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://tomcats;
        }
    }

    # ... 省略其它配置
}

proxy_pass http://tomcats:表示将所有请求转发到tomcats服务器组中配置的某一台服务器上。

upstream模块:配置反向代理服务器组,Nginx会根据配置,将请求分发给组里的某一台服务器。tomcats是服务器组的名称。

upstream模块下的server指令:配置处理请求的服务器IP或域名,端口可选,不配置默认使用80端口。通过上面的配置,Nginx默认将请求依次分配给100,101,102来处理,可以通过修改下面这些参数来改变默认的分配策略:

1、weight:默认为1,将请求平均分配给每台server。

upstream tomcats {
    server 192.168.116.13:8080 weight=2;  # 2/6次
    server 192.168.116.14:8080 weight=3;  # 3/6次
    server 192.168.116.15:8080 weight=1;  # 1/6次
}

上例配置,表示6次请求中,13分配2次,14分配3次,15分配1次。

2、fail_timeout:默认为10秒。某台Server达到max_fails次失败请求后,在fail_timeout期间内,nginx会认为这台Server暂时不可用,不会将请求分配给它。
3、max_fails:默认为1,某台Server允许请求失败的次数,超过最大次数后,在fail_timeout时间内,新的请求将不会分配给这台机器。如果设置为0,Nginx会将这台Server置为永久无效状态

upstream tomcats {
    server 192.168.116.13:8080 weight=2 max_fails=3 fail_timeout=15;
    server 192.168.116.14:8080 weight=3;
    server 192.168.116.15:8080 weight=1;
}

192.168.116.13这台机器,如果有3次请求失败,nginx在15秒内,不会将新的请求分配给它。
4、backup:备份机,所有服务器挂了之后才会生效。
5、max_conns:限制分配给某台Server处理的最大连接数量,超过这个数量,将不会分配新的连接给它。默认为0。

fair

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

url_hash

按请求url的hash结果来分配请求,使每个url定向到同一个后端服务器,服务器做缓存时比较有效。
加快服务器的解析速度,可以把动态页面和静态页面交给不同的服务器来解析,降低原来单个服务器的压力

ip_hash

按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题,但是如果某个服务器宕机,这个服务器的session信息就会丢失,目前较好的办法就是session+redis,把session保存在redis中。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Nginx是一款常用的Web服务器软件,也可以用作反向代理负载均衡器。反向代理是指Nginx作为一个中间服务器,接收客户端的请求并将其转发给后端的服务器处理,然后将响应返回给客户端。 负载均衡是指将客户端请求分发到多个后端服务器上,以平衡服务器的负载。Nginx通过使用不同的负载均衡算法,如轮询、IP哈希、最少连接等,来决定将请求发送给哪个后端服务器。 配置Nginx作为反向代理负载均衡器需要进行一些设置。首先,你需要在Nginx配置文件中定义后端服务器的地址和端口,并设置相应的负载均衡策略。例如: ```nginx http { upstream backend { server backend1.example.com; server backend2.example.com; server backend3.example.com; } server { listen 80; server_name mywebsite.com; location / { proxy_pass http://backend; } } } ``` 在上述配置中,`upstream`指令定义了后端服务器的地址,在这里我们指定了三个后端服务器。`server`块中的`location`指令指定了代理转发的路径,`proxy_pass`指令将请求转发给定义的`upstream`。 这样配置之后,当有客户端请求到达Nginx时,Nginx会根据定义的负载均衡策略将请求转发给后端服务器,并将后端服务器的响应返回给客户端。 这就是Nginx反向代理负载均衡的基本概念和配置方法。希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值