啥是代理
老实说, 我觉得「代理」一词不太好,不太「接地气,通俗化」
不如这样来理解:
如果你细心一点, 你会发现, 「代理」这一现象,在生活中简直是无处不在:
你通过中介( 活生生的人 / 租房网站 )来租房子, 中介是夹在你和房子之间的代理
雇佣钟点工来打扫房子, 钟点工是夹在你和打扫工作之间的代理
程序是你的思想与最终的机器码之间的代理
等等, 细想一下, 我们的世界, 简直就是由代理组成的. ( 取决于你想要的抽象层级 )
这时,你应该理解了: 代理像一种中间人, 像一种管家, 像夹在你和某事物之间的中间层.
代理的优点
主体的精力有限,亦或是资源有限
节省主体的精力 / 资源, 使主体专注, 从而促进社会分工化/精细化, 提高效率
减少复杂度,解放生产力
代理的缺点
引入了中间人, 增加了不透明
使主体失去了掌控力
典型例子:
Debug. 程序员失去了对机器码的掌控力, 因为代理带来了
不透明性
总体而言, 优点大于缺点, 利大于弊.
下面我们看看啥是常说的正向代理和方向代理.
正向代理
一切概念都是相对的, 一切真理都是有适用范围的
比如, 主体想要完成一件事, 此时他交给代理, 这就是正向代理
, 其流程类似于这样:主体-->代理-->另一个实体/事物/资源
可见, 正向代理
的概念是相对于主动的那个主体
而言的( 很像主动发起请求的主体叫做客户端
这种概念 )
典型例子:
Shadowsocks
各种上网代理/VPN
反向代理
反向代理
和正向代理
是一组词汇, 可见它也是相对于主动的那个主体
而言的.
我们可以举Nginx
这个例子:
主体主动发起一个请求
这个请求的最终那一头是
应用服务器
中间夹着
Nginx
然而, 此时这个中间人, 却不是帮我们的主体做事, 而是帮另一头的那个实体做事! 即Nginx
是另一头的代理.
这种情况下, Nginx
称作反向代理
( 相对于浏览器
)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。