reverse proxy
reverse proxy的作用与模式
Proxy server 是 client 与 backend server 之间的中间层软件/硬件。它接收 client 请求并转发到 origin servers。常见用途包括:过滤请求、记录日志、以及修改请求(比如加/删 headers、加密/解密、compression)。
Types
Proxy 主要分两类:
Forward Proxy
Forward proxy(常被直接叫 proxy server 或 web proxy)部署在一组 client 的前面。当这些 client 访问互联网的 sites 或 services 时,proxy 会拦截请求并代表 client 与 web servers 通信。

Advantages
- Block 某些内容
- 访问 geo-restricted 内容
- 提供匿名性
- 规避某些浏览限制
虽然 proxy 带来匿名性,但它仍然可能追踪用户信息。Proxy 的 setup 与维护成本不低,而且需要配置。
Reverse Proxy
Reverse proxy 位于一个或多个 web servers 之前,拦截来自 client 的请求。当 client 访问网站 origin server 时,请求会先到 reverse proxy。
Forward 与 reverse 的区别在于:forward proxy 在 client 之前,确保 origin server 不会直接与特定 client 通信;reverse proxy 在 origin server 之前,确保 client 不会直接与 origin server 通信。

引入 reverse proxy 会增加复杂度。单个 reverse proxy 是 single point of failure;配置多个 reverse proxies(例如 failover)会进一步增加复杂度。
Advantages
- 提升 security
- caching
- SSL encryption
- load balancing
- scalability & flexibility
Load balancer vs Reverse Proxy
Reverse proxy 和 load balancer 很像吗?不完全。Load balancer 主要在多台 servers 时分发流量;reverse proxy 即使只有一台 web/app server 也很有价值。Reverse proxy 可以承担 load balancing 的角色,但反过来不一定成立。
Examples
常用 proxy 技术: