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

Posted 林炜玮_51CTO

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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负载均衡给服务器

Nginx

生产环境部署架构

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

Nginx

访问逻辑

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

Nginx

nginx和lvs的区别

lvs

  • 客户端发送请求,lvs修改mac地址然后直接转发,工作越低层效率越高,而且还是内核工具I/O效率更高
  • 客户端和web服务器直接建立三次握手
  • 需要配置RS​部署复杂,功能单一

nginx

  • 客户端发送请求,客户端和nginx建立三次握手,nginx和web建立三次握手,所以nginx做代理的时候连接数较多。最高65536连接数,左右建立握手最大可用连接数简单计算为65535/2的并发。
  • 可以代理更高层的协议,例如http应用本身来做分流策略,针对域名、目录结构等

Nginx


以上是关于Nginx 反向代理原理以及和LVS的区别的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 反向代理

nginx的反向代理

Nginx实现反向代理负载均衡功能

LVS四层 VS Nginx七层反代(负载均衡)

LVS Nginx和HAproxy的区别,怎么选择最好

一文理清负载均衡(nginx,LVS)的工作原理