怀抱观古今,寝食展戏谑。这篇文章主要讲述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和web建立三次握手,所以nginx做代理的时候连接数较多。最高65536连接数,左右建立握手最大可用连接数简单计算为65535/2的并发。
- 可以代理更高层的协议,例如http应用本身来做分流策略,针对域名、目录结构等
推荐阅读
- centos 8利用crontab设置定时任务,crontab每秒运行
- 从网络二层到三层
- 传输层笔记
- go语言学习--切片
- docker容器基本操作
- 一种基于伪标签半监督学习的小样本调制识别算法
- 教你python tkinter实现简单计算器功能
- HTML和ASP之间有哪些区别()
- fork()和exec()之间有什么区别()