Nginx负载均衡与反向代理——扩展功能(NGINX Plus)

本文主要是介绍了NGINX Plus的相关功能,横跨了NGINX Plus R5/R6/R7/R9等各个不同版本的更新。涉及的是Nginx反向代理和负载均衡的更为高级的用法。主要包含:HTTP负载均衡,HTTP长连接,TCP和UDP的负载均衡,上游连接数限制,最短时间的均衡算法,Session一致性,实时健康检查,DNS重解析,访问控制,客户端连接数限制,客户端带宽限制,无缓冲上传文件,SS...
摘要由CSDN通过智能技术生成

本文主要是介绍了NGINX Plus的相关功能,横跨了NGINX Plus R5/R6/R7/R9等各个不同版本的更新。涉及的是Nginx反向代理和负载均衡的更为高级的用法。主要包含:HTTP负载均衡,HTTP长连接,TCP和UDP的负载均衡,上游连接数限制,最短时间的均衡算法,Session一致性,实时健康检查,DNS重解析,访问控制,客户端连接数限制,客户端带宽限制,无缓冲上传文件,SSL/TLS优化,,缓存优化,API功能,配置的最佳实践等。

什么是NGINX Plus?

顾名思义,就是Nginx的加强版或者扩展版。我们知道Nginx是开源的、免费的,但是NGINX Plus的很多功能就需要收费了。Nginx Plus 可以作为一个负载均衡器,一个web服务器,还可以作为一个内容缓存。既然是Nginx的加强版,那无疑功能会比Nginx更加强大。NGINX Plus在开源Nginx已有的功能基础上,提供了许多适合生产环境的专有功能,包括session一致性、实时更新API配置、有效的健康检查等。

NGINX Plus的版本更新

NGINX Plus R5 和更新的版本可以支持基于TCP应用的负载均衡(比如MySQL)。这就不仅仅限制于Http的负载均衡,而是大大扩充了Nginx作为负载均衡器的作用范围。R6中TCP负载均衡功能得到很大的扩充,加入了健康检查、动态更新配置、SSL终端等。等到了R7,TCP负载均衡功能就基本和Http负载均衡差不多了。z再到了R9,就可以支持UDP了。通过这些更新,NGINX Plus 远远超过了web应用的层面,成为了一款意义更为广泛的负载均衡器。毕竟协议是基础层面的东西,支持的协议越多,应用面也越广。从最初的Http/SMTP到TCP再到UDP,NGINX Plus一步步的变得越来越强大。

开源Nginx和NGINX Plus 都支持HTTP, TCP, 和UDP应用的负载均衡。但NGINX Plus 提供了一些企业级别的功能,这些功能是收费的,包括session一致性,健康检查,动态更新配置等。

HTTP负载均衡

NGINX Plus对Http负载均衡做了很多功能优化,诸如HTTP 升级、长连接优化、内容压缩和响应缓存等。在NGINX Plus中Http负载均衡的实现也非常简单:

http {
    upstream my_upstream {
        server server1.example.com;
        server server2.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_set_header Host $host;
            proxy_pass http://my_upstream;
        }
    }
}

可以通过proxy_set_header 指令来设置Host,而proxy_pass将请求转发到上游的my_upstream中。

HTTP长连接

HTTP长连接——HTTP Keepalives,是指NGINX PLus和上游服务器建立的长连接。客户端和NGINX PLus建立长连接的话,可以在客户端指定Http协议为1.1/2.0。

HTTP协议是用的底层TCP协议来传输请求,接收响应的。HTTP1.1/2.0支持TCP的长连接或者重利用,以免反复的创建和销毁TCP连接所带来的开销。

我们看看客户端到NGINX PLus之间的Http长连接:

Http的长连接

NGINX是一个完全意义的反向代理,在长连接上也毫不含糊。它管理所以来从客户端到Nginx的长连接,同样也会管理从Nginx到上游服务器的长连接,二者是完全独立的

Nginx管理的长连接:

这里写图片描述

NGINX 将连接上游服务器的空闲连接做了“缓存”,并不直接关掉它们。如果有请求过来,NGINX先从缓存的活跃连接中去拿一个使用,而不是立马创建一个新的,如果缓存为空那么NGINX 再去新建一个连接。这种操作保持了和上游之间连接的最小必要的数目,从而降低了Nginx和上游服务器之间的延迟并减少了临时端口的利用率,所以NGINX能处理大的并发。这种技术加上别的负载均衡技术,有时候可以被称为连接池,或者连接复用。

为了配置闲置长连接缓存,你需要指定几个指令:proxy_http_version,proxy_set_header,keepalive

server {
    listen 80;
    location / {
        proxy_pass http://backend;
        proxy_http_version 1.1; # 只有Http1.1/2.0才能支持长连接
        proxy_set_header Connection "";
    }
}

upstream backend {
    server webserver1;
    server webserver2;

    # maintain a maximum of 20 idle connections to each upstream server
    keepalive 20; # 闲置长连接缓存时间为20
}

TCP和UDP的负载均衡

作为对HTTP协议的扩展,NGINX Plus可以直接支持基于TCP和UDP协议的应用。基于TCP的如MySQL,支持UDP的如DNS 和RADIUS应用。对于TCP请求来说,NGINX Plus接收了客户端的TCP请求,然后再创建一个TCP请求对上游服务器发起访问。

stream {
    upstream my_upstream {
        server server1.example.com:1234;
        server server2.example.com:2345;
    }

    server {
        listen 1123 [udp];
        proxy_pass my_upstream; #注意这里没有http://了
    }
}   

对TCP请求的支持出现在NGINX Plus R5,R6

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值