我们都知道Nginx之所以强大,正式在于它的代理功能,特别是反向代理,在集群、负载均衡上可谓大显身手。那么什么是正向代理以及反向代理呢?今天我们不用专业术语,而是用简单易懂的买东西的原理来举例。

一.正向代理

情景:【小明】想要到【解忧杂货铺】去买可乐,但是来到杂货铺,门关着的并且挂着牌子写着:“只有会员才能进门买商铺”。这时候【小代】对小明说他有杂货铺的会员,可以帮小明买,于是小明每次去杂货铺买东西都通过小代购买。

解释:【小明】就是我们所说的客户端;【小代】则是Nginx正向代理服务器;【解忧杂货铺】则是客户端想要访问的网站或者服务器。这里的情景是客户端访问不到目标网站,从而选择代理服务器作为介质去访问;还有一种就是客户端能访问到目标网站,只是客户端想隐藏自己的身份(IP),从而可以借助代理服务器的身份去访问目标服务器。

二.反向代理

情景:还是【小明】想要去【解忧杂货铺】买可乐,但是杂货铺的【服务员小艺】对小明说:“可乐我可以提供给你,但是你不能直接去我店铺里拿,你需要什么直接跟我说,我给你拿就可以了”。于是小明每次买东西都是到杂货铺门口找服务员买,需要什么服务员就给他拿即可,但是小明却看不到店铺里面商品如何摆设。

解释:【小明】就是客户端,【解忧杂货铺】是目标服务器,客户端要访问目标服务器上的接口获取数据,但是目标服务器上内部的接口不方便对外开放的情境下,就通过【服务员小艺】(Nginx)反向代理给客户端。这时候客户端是不知道服务器内部接口的情况,只知道Nginx代理的IP地址提供的接口,并不知道这个接口从哪里来的。

三.区别

还是用【小明】买可乐来进行对比来进行解释两者的区别:

1.正向代理:小明能看到【解忧杂货铺】里的东西。专业术语就是客户端知道目标网站或者服务器,但客户端不方便直接访问或者无权限访问(例如需要权限或者翻墙),这时候需要通过Nginx代客户端进行访问。

2.反向代理:小明看不到【解忧杂货铺】里具体的东西,只能通过【服务员小艺】展示的来进行购买。专业术语就是客户端需要访问服务器A的接口,而服务器A接口不方便暴露,只有通过Nginx反向代理的方式展示给客户端,这时候客户端只知道接口是Nginx地址暴露的,但却不知道原来是服务器A的接口。

四.应用场景

1.正向代理一般用于访问特定的服务器或者地址,客户端需要隐藏真实IP。

2.正向代理还有一个使用场景是访问无法直接访达的地址,例如google,目前无法访问,这时候就通过代理的方式去访问。

3.反向代理主要用于服务器接口安全,服务端的接口都只对内部开发,外网无法访问。这时候就要借助Nginx反向代理,把内网服务器的接口映射到外网,从而隐藏了内部服务器地址。

4.反向代理还有一个引用场景是均衡负载。Nginx可以配置多个后端服务器,而暴露给外网的仍然是相同的接口,只不过这时候后端可以是1个或者多个,多个的目的是保障后端服务器能够最大限度的承载。

五.总结

技术并没有我们想象的那么遥远那么触不可及,其实它就在我们身边,技术也是源于生活,同时又致力于改善生活。

通俗易懂:Nginx正反向代理,买瓶可乐就能理解相关推荐

  1. nginx 正反向代理

    1.代理 在Java设计模式中,代理模式是这样定义的:给某个对象提供一个代理对象,并由代理对象控制原对象的引用. 可能大家不太明白这句话,在举一个现实生活中的例子:比如我们要买一间二手房,虽然我们可以 ...

  2. Nginx - 正反向代理,nginx.conf配置

    Nginx (engine x) 是一个轻量级的高性能的HTTP和反向代理web服务器及电子邮件(IMAP/POP3)代理服务器. Nginx 是由俄罗斯人 Igor Sysoev 采用C语言开发编写 ...

  3. 有效记忆nginx正反代理定义

    有效记忆nginx正反代理定义 一.正向代理 二.反向代理 一.正向代理 请求顺序是吴签想喝茶百道奶茶了,给经纪人提出了请求,然后经纪人去茶百道商家给吴签买奶茶,经纪人帮吴签干活,所以对于经纪人来说是 ...

  4. java递归空瓶换饮料_问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料? | 学步园...

    /** *问题描述:一次买n瓶可乐,k个空瓶可以换一瓶饮料,那么一共能喝多少瓶饮料? *下面用不同的方法实现了这个问题(Java实现): *1.递归方法 *2.非递归方法 *3.公式法 */ publ ...

  5. 说明白正反向代理,以及Nginx和Gunicorn

    一:什么是Nginx Nginx的产生 没有听过Nginx?那么一定听过它的"同行"Apache吧!Nginx同Apache一样都是一种WEB服务器.基于REST架构风格,以统一资 ...

  6. 给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐

    //给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐.(5分) public class Test1 {public static void main(Stri ...

  7. 给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱,问最多可以喝到多少瓶可乐?

    给20块钱买可乐,每瓶可乐3块钱,喝完之后退瓶子可以换回1块钱, 问最多可以喝到多少瓶可乐? public class Test {public static void main(String[] a ...

  8. 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐

    import java.util.Scanner; public class Test10 { /*** 10.28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?* 假如是5 ...

  9. 28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐?(解读误区)

    28人买可乐喝,3个可乐瓶盖可以换一瓶可乐,那么要买多少瓶可乐,够28人喝?假如是50人,又需要买多少瓶可乐? 本来是一道很简单的问题(找个小学生都能算出来)但是大部分人都忽略了一个跟经济有关的问题. ...

最新文章

  1. Cell Reports:中科院动物所魏辅文组解析大熊猫肠道菌群季节性变化的功能
  2. php写js跳转页面,php实现页面的三种跳转
  3. mysql删除redo_删除redo log group or member
  4. java注解的继承_Java注解合并,注解继承
  5. ABP入门系列(21)——切换MySQL数据库
  6. 脉冲神经网络基础知识,SpikeProp
  7. 360手机浏览器_网信办出手:华为、360、qq等8款手机浏览器被列入首批重点整治名单...
  8. 【bzoj4542】[Hnoi2016]大数 莫队算法
  9. linux是乱码,linux乱码的解决方法 -
  10. table中td的内容换行。
  11. AD 10分钟画一块最简PCB
  12. 鼠标点计算机再点网络也是选定,鼠标左键单击变双击,点一下变两下是什么原因?...
  13. cloudMusic.mps的前世今坑
  14. 删库是不可能删库的,这辈子是不可能删库的
  15. 用Matlab把SMAP vegetation optical depth (VOD)数据转换成带投影信息EASE GRID2的tif文件
  16. 分享一些实用的手机应用
  17. AD打印,只打印自己想要的层怎么设置
  18. mysql association_Mybatis的一对多(collection)和一对一(association)查询
  19. 华为p10和p10plus区别_华为P10和华为P10Plus怎么样?哪个更值得买?华为P10与P10Plus区别对比...
  20. C++ 强制类型转换操作符(static_cast、dynamic_cast、const_cast和reinterpret_cast)

热门文章

  1. 数据结构与算法——左程云06
  2. python里有哪些函数_python update函数会调用哪些内置函数_Python函数之内置函数
  3. ATA并口硬盘接口图解
  4. 【SDOI2008】山贼集团
  5. 谷歌翻译用不了修复方法记录
  6. 【English】Day 2 大英读写2 U1 A 7.11.12 翻译
  7. 2018网站优化人员不同阶段在做哪些事
  8. 北京理工大学计算机学院研究生孙灿,吴心筱_北京理工大学计算机学院
  9. 中标麒麟操作系统,yum安装软件时提示:“已加载插件:langpacks,无须任何处理“的解决办法
  10. 关于软件工程----一线城市与二三线城市的区别