Nginx 反向代理原理以及和LVS的区别

怀抱观古今,寝食展戏谑。这篇文章主要讲述Nginx 反向代理原理以及和LVS的区别相关的知识,希望能为你提供帮助。
反向代理指的是代理外网用户的请求到内部的指定的服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。正向代理为客户端提供缓存服务可用于跳板,反向代理为服务端提供负载均衡调度。
nginx 除了可以在企业提供高性能的web服务之外,另外还可以将 nginx 本身不具备的请求通过某种预定义的协议转发至其它服务器处理,不同的协议就是Nginx服务器与其他服务器进行通信的一种规范,主要在不同的场景使用以下模块实现不同的功能

#实现反向代理
ngx_http_proxy_module: #将客户端的请求以http协议转发至指定服务器进行处理
#实现负载均衡
ngx_http_upstream_module #用于定义为proxy_pass,fastcgi_pass,uwsgi_pass等指令引用的后端服务器分组
#基于TCP反向代理
ngx_stream_proxy_module:#将客户端的请求以tcp协议转发至指定服务器处理
#基于fastcgi反向代理
ngx_http_fastcgi_module:#将客户端对php的请求以fastcgi协议转发至指定服务器助理
#基于uwsgi反向代理
ngx_http_uwsgi_module: #将客户端对python的请求以uwsgi协议转发至指定服务器处理

逻辑关系
反向代理的工作逻辑,nginx接受用户请求,nginx负载均衡给服务器

生产环境部署架构
用户通过DNS解析到域名的公网地址,防火墙NAT到内网转给Nginx,Nginx做高可用(2套),再负载均衡给内部服务器

访问逻辑
用户和后端服务器使用相同的协议叫做同构代理,反之为异构代理。LVS工作在4层无法工作之上层的协议,多用于转发。一般情况下我们把能够处理7层协议的叫做代理

nginx和lvs的区别
【Nginx 反向代理原理以及和LVS的区别】lvs
  • 客户端发送请求,lvs修改mac地址然后直接转发,工作越低层效率越高,而且还是内核工具I/O效率更高
  • 客户端和web服务器直接建立三次握手
  • 需要配置RS?部署复杂,功能单一?
nginx
  • 客户端发送请求,客户端和nginx建立三次握手,nginx和web建立三次握手,所以nginx做代理的时候连接数较多。最高65536连接数,左右建立握手最大可用连接数简单计算为65535/2的并发。
  • 可以代理更高层的协议,例如http应用本身来做分流策略,针对域名、目录结构等




    推荐阅读