谈谈我对 nginx 正向代理和反向代理的理解

nginx 服务器在我们平常的软件开发中可能还是用到的比较多的,那么有一个问题我们就应该明白,也许让你去实现轻而易举,但说到其中的原理是不是就有点不清楚了。下面就谈谈我自己对正向代理和反向代理的理解:

首先有一个用户 C,三台服务器 S1、S2 和 S3,S1、S2、S3 在同一局域网内互相可访问,但 S1 对外网开放,S2 和 S3 不对外网开放,还有一份数据资源 D,资源 D 放在服务器 S2 和 S3 上。

nginx 正向代理

这时用户 C 明确知道自己想访问的数据资源 D 在服务器 S2 上,用户 C 想要访问这份资源但是没办法直接访问服务器 S2,用户 C 想到服务器 S1 和 S2 在同一局域网并且互相可访问,而自己能够访问服务器 S1,所以用户 C 就通过服务器 S1 去访问服务器 S2 上的资源 D。那么正向代理就是对于用户 C 来说他是明确知道他要访问的数据资源 D 在哪个服务器上;对于服务器 S1 来说他只充当了用户 C 的中间代理角色;而对于服务器 S2 来说他只知道访问他的资源的是服务器 S1,根本不知道用户 C 的存在。

正向代理的整个流程就是用户 C 访问服务器 S2 上的数据资源 D,但是他是通过借助服务器 S1 来进行访问的,服务器 S1 得到数据资源后再返回给用户 C。

nginx 反向代理

还是刚开始上面说的这些基本条件:用户 C,服务器 S1、S2 和 S3,以及服务器 S2 和 S3 上的数据资源 D。这时用户 C 并不知道数据资源 D 在服务器 S2 和 S3 上面,他只知道访问服务器 S1 可以得到自己想要的资源,于是他每次都是直接访问服务器 S1,只不过提供给用户 C 数据资源的都是服务器 S2 或者 S3。那么反向代理就是对于用户 C 来说他是不知道数据资源 D 具体在哪里,也不知道是由谁提供的;对于服务器 S1 来说每次都接收用户的请求,然后再把请求根据调度策略交给提供资源的服务器 S2 或 S3;对于服务器 S2 和 S3 来说同样也都不知道访问这份资源的真实用户是谁,只是和服务器 S1 进行交互。

反向代理的整个流程就是用户 C 访问服务器 S1 获取数据资源 D,服务器 S1 将请求转交给服务器 S2 或 S3,然后得到相应的资源后再返回给用户 C。

总之,正向代理就是客户端知道服务器端,带过代理连接服务器端。而反向代理就是客户端不知道服务器端,通过代理去连接服务器端,具体是由哪个服务器端提供服务取决于代理的调度方式,即 nginx 中的负载均衡策略。以上是我个人的理解,有错误还请指出哈。

励志成为一名菜鸟码农,共勉!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值