要理解什么是 反向代理(reverse proxy) , 自然你得先知道什么是 正向代理(forward proxy).
另外需要说的是, 一般提到反向代理, 通常是指 http 反向代理, 但反向代理的范围可以更大, 比如 tcp 反向代理, 在这里, 不打算讨论 tcp 之类的反向代理, 当文中说到反向代理时, 指的就是 http 反向代理.
正向代理通常直接称为 代理(proxy), 无需强调它是正向的, 在 http 协议中, 代理即指正向代理.
直接访问
而要谈论什么是正向代理, 则需要先讨论"直接访问"的形式.
也就是没有任何代理的模式.
事实上, 直接访问对于很多的小网站来说是最常见的方式. 直接访问用我们日常购物来比喻的话就是类似于"厂家直销", 你直接向生产厂家下单, 没有经过任何的中间商.
从系统的角度看, "直接访问"就是浏览器的请求直接到了最终生成网页的服务器, 中间没有经过任何的 http 代理服务器. 那么代理或者说更啰嗦点的"正向代理"又是什么情况呢?
正向代理(forward proxy)
还是用购物来比喻的话, 你从商店里而不是直接从厂家购买一个商品就类似于代理的模式.
比如, 你从商店里买了一盒方便面, 显然, 你很清楚, 商店本身是不生产方便面的, 它不过是个"中间商"而已, 转了一手, 顺便赚点你的钱, 店里的方便面也是它从厂商那边进货来的. 当然, 有些店雁过拔毛拔得有点狠, 那就变成让人厌恶的"中奸商"了.
那么, 对于浏览器的请求处理来说, 一个代理, 更确切的说一台代理服务器, 扮演的角色也是类似的, 它也就是一个请求的中间商而已.
一个正向代理服务器并没有直接响应请求的能力, 就像商店不生产方便面一样, 它不过是把请求转发到最终的网页服务器上, 再把后者的响应再转发给请求者, 也就是浏览器, 如下图所示:
但这里还有个问题, 你知道你家周围有哪些小商店, 你想买些东西的时候直接去找这些"代理商"即可, 问题