nginx的正向代理和反向代理

代理:客户端不再是直接访问服务端,通过代理服务器访问服务端。

正向代理以及缓存配置:

正向代理:面向客户端,通过代理服务器的ip地址访问目标服务端。

服务端只指定代理服务器的地址,真正的客户端ip可以隐藏。

配置正向代理的示例:

反向代理

客户端还是访问的代理地址,但是具体的访问web服务器是哪一台,并不知道

作用:

请求分配到多个后台服务器上,分担服务器的负载,提供系统的可用性和稳定性

缓存加速

安全保护

*四次代理和七层代理之间的区别

正向代理:http模块中的server和location

http模块配置的都是七层代理

七层就是应用层,使用的http协议,可用对请求进行解析和处理,7层代理走的是用户态,应用协议和程序功能

七层的处理速度相对比较慢,但是可以提供更高级的功能和更好的用户体验。

既可以是域名也可以是ip加端口

四层是传输层,ip+端口,请求转发到后端,无法对请求进行深入的解析和处理,只是对请求流量的转发,不涉及处理。

四层转发是内核态,内核处理,内核转发,所以速度比较快

应用场景:

七层代理,一般都是对外提供访问,需要对请求进行处理,包括安全,过滤,流量控制

四层代理,一般都是内部使用,不需要对流量请求做特殊处理

配置方法以及负载均衡的算法:

反向代理=负载均衡

配置方法:

七层只能写在http模块中。命令:upstream,只能在http的大模块中,不能在server,也不能在location中

四层只能写在全局配置中,不能在http模块中,命令:stream

例:基于域名实现负载均衡

test1 20.0.0.10 www.ykw11.com代理 ------配置反向代理

test2 20.0.0.20 www.ykw22.com 后台服务器1

test3 20.0.0.30 www.ykw33.com 后台服务器2

1、七层代理

test1 20.0.0.10 代理 ------配置反向代理

test2 20.0.0.20 后台服务器1

test3 20.0.0.30 后台服务器2

客户端:谷歌浏览器

七层代理写在http模块里,默认端口80

http {

#......其他配置

upstream test {

server 20.0.0.20;

server 20.0.0.30;

}

server {

listen 80;

location / {

proxy_pass test;

}

}

}

2、四层代理

四层代理只能写在全局环境中,不能写在http模块里

注意:写在四层里必须指定后台服务器的地址和端口

stream {

upstream test {

server 20.0.0.20:80;

server 20.0.0.30:80;

}

}

server {

listen 8000;

#如果这里写80端口,转发会和Nginx本身的端口冲突

proxy_pass test;

}

负载均衡的算法:

1、轮询:轮询算法是最简单也是最基础的算法,也是默认算法,请求轮流分配到 后端服务器。

轮询算法适用于后端服务器处理能力相同的情况,访问量不大的情况,默认算法,可以不加

2、加权轮询:weight

在轮询的基础上,给每个后台服务器设置不同的权重。流量的分配不一定是按照权重比来

权重高的被转发的概率大,权重低的概率相对较小

后端服务器的性能有差异。性能高,权重相对更高;性能低,权重相对低

3、最小连接数算法:least_conn

会把请求发送到当前连接数较少的后端服务器上

用于后端服务器处理任务耗时不同的情况,可以避免请求集中在处理能力更强的服务器上

4、*ip_hash 怎么做会话保持?

ip_hash根据算法,计算客户端的ip地址的hash值,然后将请求转发到相应的服务器

在第一次访问网址之时,就会计算出这个hash值,会把请求分到一个服务器,但是下一次客户端如果使用相同的ip地址再次访问,就不再分配到其他的服务器,除非后台服务器的算法变更,或者后台的服务器数量发送了变化。这时才会更改访问的服务器。

适用场景:高并发,如果说客户端进来之后,不停的轮换服务器,反而会加重服务器的负担,固定在一台服务器上,降低了代理服务器的压力,同时也节约了资源。

nginx当中怎么实现会话保持?

ip_hash可以实现会话保持

sessionc 动态页面里面配置会话

5、url_hash

根据请求的url地址来计算hash值,然后再转发,如果每次请求的url都一样,就会被分配到同一个服务器。

转发的地址发生变化,后台服务器清理缓存或者后台服务器的数量发生变化

以上都是在七层当中使用的,四层没有ip_hash和url_hash算法

相关推荐
阳小江18 分钟前
Docker知识点
运维·docker·容器
只是橘色仍温柔1 小时前
xshell可以ssh连接,但vscode不行
运维·vscode·ssh
IT里的交易员1 小时前
【系统】换硬盘不换系统,使用WIN PE Ghost镜像给电脑无损扩容换硬盘
运维·电脑
共享家95272 小时前
深入剖析Linux常用命令,助力高效操作
linux·运维·服务器
大刘讲IT2 小时前
制造业数字化转型:流程改造先行还是系统固化数据?基于以MTO和MTS的投资回报分析
运维·经验分享·生活·产品经理·数据可视化
吃旺旺雪饼的小男孩2 小时前
Ubuntu 22.04 安装和运行 EDK2 超详细教程
linux·运维·ubuntu
阿政一号3 小时前
Linux进程间通信:【目的】【管道】【匿名管道】【命名管道】【System V 共享内存】
linux·运维·服务器·进程间通信
方渐鸿3 小时前
【2025】快速部署安装docker以及项目搭建所需要的基础环境(mysql、redis、nginx、nacos)
java·运维·docker·持续部署·dockercompse
小哈里3 小时前
【运维】云计算的发展历程,云原生时代的运维理念&工具技术栈,高可用系统的云运维 —— 以K8S集群调度算法与命令为例
运维·云原生·kubernetes·云计算·架构设计
A charmer4 小时前
【Linux】文件系统知识梳理:从磁盘硬件到文件管理
linux·运维·服务器