Nginx正向代理,反向代理和负载均衡

nginx的两种代理方式:

七层代理(http协议)

四层代理(tcp/udp流量转发)

七层代理:七层代理,代理的是http的请求和响应。

客户端请求代理服务器,由代理服务器转发客户端的httpd请求。转发到内部的服务器(可以是单台,也可以是一组)。

后端的webserver,再把响应送达代理服务器,最后再到客户端。

反向代理:客户端访问的是代理服务器,代理服务器转发http请求,但是客户端不知道访问的代理服务器地址。

正向:客户端也是访问代理服务器,代理服务器转发请求,客户端知道代理服务器的地址,但不知道后端的webserver的ip地址

四层代理:基于tcp/ip协议层的转发代理方式。基于ip和端口号实现负载均衡,或者正向代理。

四层代理无法获取http请求中的URL信息,只能对TCP/UDP的数据包进行转发。

四层代理和七层代理之间的区别:

1.七层代理走的是用户态,需要对http的请求进行处理和解析,解析过程中,可以根据请求头和请求体的内容进行流量控制,内容过滤。转发速度比较慢,但是提供的功能更高级,用户的体验的更好

2.四层代理是基于IP地址和端口号,只负责将IP和端口转到后端服务器,不对请求做任何的处理,只负责转发。因为四层走的是内核,且不做处理,所以四层转发速度较快。

选择场景:

七层代理:需要对http请求进行控制和处理的,只能选择7层代理(常见的代理方式)

四层代理:只需要转发tcp/udp数据包的,可以选择四层,也可以选择7层。

七层可以对ip和端口进行转发,也可以对域名进行代理

四层只能是ip和端口

负载均衡算法:有些是无法在四层代理使用。

模块:

七层代理只能写在http模块的全局配置当中。

upstream:用于处理http请求,支持反向代理,负载均衡,缓存功能

在upstream模块中可以配置多个服务器。

四层代理的模块:

stream是只能写在全局模块当中的单独配置。stream代理不管协议,只管流量。

正向反向代理配置

正向代理:类似于vpn,科学上网,加速器。很少使用

server {

listen 82;

设置DNS的IP,用来解析proxy_pass中的域名

resolver 8.8.8.8;

location / {

proxy_pass http://hostrequest_uri;

}

}

企业架构都是反向代理,即客户端通过代理服务器访问,但是后端有多台服务器。

七层代理反向代理

:http全局配置

upstream test {

ip_hash

last_conn

hash_$request_uri consistent;

server 192.168.233.62 weight=3;

server 192.168.233.63 weight=2;

}

location {

proxy_pass http://test;

}

负载均衡的算法:

1、rr(round robin)

负载均衡最简单的算法,轮询。请求轮流分配到后端服务器。

默认算法,可以不加,每发起一次都是新的请求,服务器上没有缓存。

对服务器处理能力相近且访问量比较小的网站适用。

2、加权轮询(weight)

建立在默认轮询算法的基础之上。为后端服务器分配不同的权重,处理能力强的服务器可以分配的权重值要高一些。

轮询次数基本上按照权重进行分配。服务器上也没有缓存。

权重高的服务可能会被频繁地请求响应。权重低的可能闲置。

中大型网站可以使用加权轮询。

3、最少连接数算法。

会把请求放送到连接数量较少的后端服务器。

最少连接数算法可以单独使用,但是一般都是结合加权轮询一块使用,避免所有的请求都发送到处理能力强的服务器。提高整个集群的稳定性。

中型网站,大型网站的日常访问可以满足。

4、ip_hash:

ip_hash会根据客户端ip地址解析出一个hash值,然后将请求放到对应的后端服务器,下一次用户再访问时,同一客户端的请求将会被分配到同一台服务器。

ip_hash第一次访问之后,后续访问是有缓存的。

后端服务器的数量发生变化,可能会进行重新分配。

ip_hash适用于高并发,请求不会跳转,请求的是缓存。

5、url hash

根据请求url地址计算hash值,然后将请求发送到相应的后端服务器器,相同的url地址请求会被分配到同一个服务器。

url_hash和ip_hash是结合在一块使用,可以适用于并发较高的场景,只要是ip_hash和url_hash,访问之后第二次都是访问缓存。可以降低后端服务器的压力。

基于域名的反向代理:

upstream ky32{

server www.kgc.com weight=3;

server www.benet.com weight=2;

}

location {

proxy_pass http://ky32;

proxy_set_header HOST $host

proxy_set_header X-Real-IP $remote_addr;

}

四层的反向代理:

在四层代理中可以使用加权轮询,最小连接数算法也可以实现负载均衡

但是ip_hash url_hash不可以在stream中使用

因为四层不能对请求处理,只是转发数据包。

http七层代理:可以处理请求ip地址和请求的url。

相关推荐
迪康Defender1 小时前
端点安全选型观察:一体化平台与传统 EDR 的场景差异
运维·经验分享·安全·自动化·学习方法·远程工作·安全架构
amcomputer1 小时前
Docker 常用命令总结:从安装到日常使用
运维·docker·容器
ZKNOW甄知科技1 小时前
燕千云迭代版本发布:智能Agent深入业务现场
运维·人工智能·低代码·机器学习·自然语言处理·自动化·aigc
FY@-@1 小时前
云计算基础(下):虚拟化原理与 DAS/NAS/SAN 存储
运维·服务器·云计算
硅基手札2 小时前
SPI技术系列 13 · SPI 调试与排查
linux·运维·stm32·单片机·嵌入式硬件·bug
溜达的大象2 小时前
飞牛NAS部署ONLYOFFICE Docs:把文档、表格和PPT的在线编辑能力放到自己的服务器上
运维·服务器·powerpoint
Sayai2 小时前
Kafka 磁盘空间治理实战:retention 保留策略、log.dirs 在线扩容、分区跨盘迁移与不停机整体换盘
大数据·运维·分布式·kafka·消息队列
erzong2312 小时前
Linux操作系统:基于环形队列&信号量实现多生产者多消费者的简易模型
linux·运维·服务器
小羊没烦恼!2 小时前
TypedSql:在 C# 类型系统上实现一个 SQL 查询引擎
java·linux·运维·服务器·开发语言·数据库·mysql
启博网络2 小时前
智慧档案库房工业组网:MR-1280 边缘大脑,实现温湿度、漏水、防火防盗设备智能联动教程
运维·网络·物联网·网络协议·网络安全·信息与通信·sdwan