作为一款高性能 Web 服务器,NGINX 实至名归。想必很多人都知道 NGINX 也可用作反向代理,但对于其功能之强大就可能不了解了。
什么是反向代理?
我们先回过头来问一个问题,什么是代理服务器?我认为百度百科上的定义很准确:
代理服务器位于客户端和实际服务器(托管着客户端要查找的数据)之间。对于客户端而言,代理服务器看起来是实际的后端服务器,而对于后端服务器而言,代理服务器看起来是客户端。对于反向代理服务器的定义,我们再来看看百度百科:
不同之处在于,代理服务器位于客户端和一台后端服务器之间,而反向代理服务器则位于一台或多台后端服务器的前面,并决定每个请求应该匹配哪台后端服务器。
使用反向代理有何优势?
为何要使用反向代理服务器?使用反向代理服务器有诸多优势:
- 并发性 – 互联网应用通常涉及大量客户端,每个客户端都会打开多个连接,导致与后端服务器的连接数量非常大。许多 Web 服务器和应用服务器都无法很好地处理大量连接(用作 Web 服务器的 NGINX 除外),因此添加一个可更好地处理多个连接的反向代理能够显著提高后端服务器的性能。
- 弹性 – 如果客户端直接连接到后端服务器,当服务器发生故障时,当前连接(或试图连接)到该服务器的所有客户端都会遭遇请求失败。反向代理服务器能够监控后端服务器的健康状态,并停止向故障服务器发送请求,直到其重新投入使用。客户端不会收到错误消息,因为反向代理会自动将请求发送到仍在运行的后端服务器。
- 可扩展性 – 由于反向代理是一组后端服务器的“中转站”,因此您可以根据不断变化的流量负载添加和移除服务器。
- 七层路由 – 反向代理了解流向所有服务器的流量,并能够就每个请求的发送目的地做出明智的决策,并按需修改请求和响应。它能够根据请求中的某个 HTTP 请求头、URL 的一部分、客户端的地理位置等做出路由决策。
- 缓存 – 反向代理是执行缓存的理想之地 — 较之将所有请求发送到后端服务器并让每台后端服务器构建自己的缓存,将内容缓存到反向代理通常更加高效。
- 其他功能 – 由于位于后端服务器的前面,因此反向代理还可以执行其他功能,例如根据带宽或请求速率进行流量整形、实施连接限制、集成各种授权机制、执行活动监控等。
将 NGINX Plus 用作反向代理
NGINX Plus 基于 NGINX 开源版的卓越 Web 服务器功能增添了更多特性,是一款功能齐全的应用交付控制器(ADC)。
以下是 NGINX Plus 具备的部分特性。
负载均衡
不仅有加权和无权算法等多种负载均衡算法可供选择,而且还支持会话保持。NGINX Plus 可对 HTTP、HTTPS、WebSocket、FastCGI、memcached、SCGI、SPDY(已被 HTTP/2 取代,也可通过 NGINX Plus 进行负载均衡)及 uwsgi 实施负载均衡。阅读更多信息。
健康检查
支持被动和主动监控后端服务器的健康状态。如果 NGINX Plus 无法连接到某个节点,则该节点将被标记为不可用。主动健康检查也可配置为针对后端节点定期运行。此外,NGINX Plus 还具有慢启动特性,可缓慢地增加流入刚上线节点的流量,以避免新节点因流量激增而被压垮。阅读更多信息。
请求路由
流量可根据请求的任何部分进行路由,例如客户端 IP 地址、主机名、URI、查询字符串、请求头等。
请求和响应重写
请求或响应的任何部分均可修改,包括请求头、正文和 URI。NGINX Plus 还可以添加和删除请求头。了解更多信息。
缓存
既可缓存响应,也可配置要缓存的内容类型和缓存时长。您还可以清除缓存中的项目。了解更多信息。
压缩
支持 Gzip 压缩,可对哪些内容需要压缩以及何时使用压缩执行细粒度控制。了解更多信息。
SSL/TLS 处理
支持 SSL/TLS 解密和加密,可使用不同的证书对多个域名进行解密。了解更多信息。
实时活动监控和日志记录
可通过简单的 HTTP 请求获取以 JSON 格式编码的 NGINX Plus 统计数据。提供的仪表盘网页可显示统计数据,或者您可以将这些数据输入自定义或第三方监控工具。自定义格式的日志可配置为本地日志记录和导出到系统日志。阅读更多信息。
更多出色特性
NGINX 还有许多其他特性,例如视频流支持、邮件代理支持、GeoIP 支持、无需停机即可优雅重启和升级、流量整形、连接限制等。如欲了解更多信息,请访问:nginx-cn.net 和 nginx.org.cn。