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负载均衡给服务器
生产环境部署架构
用户通过DNS解析到域名的公网地址,防火墙NAT到内网转给Nginx,Nginx做高可用(2套),再负载均衡给内部服务器
访问逻辑
用户和后端服务器使用相同的协议叫做同构代理,反之为异构代理。LVS工作在4层无法工作之上层的协议,多用于转发。一般情况下我们把能够处理7层协议的叫做代理
nginx和lvs的区别
lvs
- 客户端发送请求,lvs修改mac地址然后直接转发,工作越低层效率越高,而且还是内核工具I/O效率更高
- 客户端和web服务器直接建立三次握手
- 需要配置RS部署复杂,功能单一
nginx
- 客户端发送请求,客户端和nginx建立三次握手,nginx和web建立三次握手,所以nginx做代理的时候连接数较多。最高65536连接数,左右建立握手最大可用连接数简单计算为65535/2的并发。
- 可以代理更高层的协议,例如http应用本身来做分流策略,针对域名、目录结构等
以上是关于Nginx 反向代理原理以及和LVS的区别的主要内容,如果未能解决你的问题,请参考以下文章