代理(proxy),即中间人,它代替客户端发送请求给服务器,收到响应后再转给客户端。通常意义上的代理是从用户的角度讲的,用户通过某个代理可以访问多个网站,这个代理是靠近用户的,比如某些公司可能需要限制员工所访问的网站,就会在网络出口处放置一个代理来做过滤。
反向代理(reverse proxy),本质上跟代理是一回事,只不过是从服务器的角度讲的,是靠近服务器的。比如某个网站有多个服务器,提供同样的功能,一般会在网络入口处放一个代理,接收客户端的请求,再基于某种策略(比如轮转)转发给后端服务器,这样可以提高整个系统的服务能力。nginx 就是一种常见的 HTTP 协议反向代理。
nginx 中常见的反向代理指令有两个: 和 ,前者使用标准的 HTTP 协议转发,后者使用 FastCGI 协议转发,用于 PHP 等架构的环境。在我要说的这个域名问题上,它们行为是一样的,所以下面仅以 为例。