Nginx是大型架构的必备中间件,本篇重点详解Nginx代理@mikechen
1. 服务对象不同
服务对象不同,这是正向代理、和反向代理最根本的区别。
正向代理: 代理的是客户端,正向代理服务器位于客户端、和目标服务器之间。
如下图所示:
反向代理: 代理的是服务器,反向代理服务器位于客户端、和一组后端服务器(如 Web 服务器、应用服务器)之间。
2.应用场景不同
正向代理,通常用于:突破网络限制。
比如:帮助内部用户访问因防火墙、或地理限制而无法直接访问的外部网站。
最典型的就是:访问Google。
反向代理的应用场景更广,典型包含:
负载均衡:将客户端请求分发到多台后端服务器,提高系统吞吐量和可用性。
安全防护:作为应用服务器的门面,抵御外部攻击,隐藏内部服务器结构。
动静分离:将静态资源和动态请求分别转发到不同的后端服务器处理,优化性能。
3. 配置位置不同
正向代理,配置在 客户端(如浏览器、或系统网络设置),客户端必须知道并信任这个代理。
反向代理:配置在 服务端(如 Nginx 作为反向代理网关),对客户端完全透明,用户无需做任何额外设置。
反向代理: 通常部署在服务器集群的前端,作为服务的入口。
4. 隐藏身份不同
正向代理,隐藏的是 客户端 的真实身份。
外部网站只看到代理服务器的 IP,看不到真实用户的 IP。
反向代理,隐藏的是 服务端 的真实身份。
客户端只知道代理服务器的地址,不知道后面有多少台后端应用服务器。