博客 | NGINX

使用 NGINX Plus 进行反向代理

NGINX-F5-horiz-black-type-RGB 的一部分
里克·尼尔森缩略图
里克·尼尔森
2014 年 4 月 10 日发布

NGINX 作为一个高性能的 Web 服务器获得了当之无愧的声誉。 我想很多人都意识到 NGINX 也可以用作反向代理,但他们可能没有意识到它是一个多么强大的反向代理。

什么是反向代理?

首先让我们回顾一下并问一下,什么是代理服务器?  我认为维基百科有一个很好的定义:

代理服务器是一种服务器(计算机系统或应用),它充当客户端向其他服务器寻求资源的请求的中介。

因此,代理服务器位于客户端和托管客户端所需数据的实际服务器之间。 对于客户端来说,代理服务器似乎是实际的后端服务器,而对于后端服务器来说,代理服务器看起来像客户端。 为了定义反向代理服务器,我们回到维基百科

反向代理是一种代理服务器,它代表客户端从一个或多个服务器检索资源。

不同之处在于,代理服务器位于客户端和一个后端服务器之间,而反向代理服务器位于一个或多个后端服务器的前面,并决定对每个请求使用哪一个后端服务器。

使用反向代理有什么好处?

为什么要使用反向代理服务器?  有很多好处:

  • 并发性——互联网应用通常涉及大量客户端,每个客户端打开多个连接,从而导致与后端服务器的连接数量非常多。 许多 Web 服务器和应用服务器不能很好地处理大量连接(NGINX 用作 Web 服务器时是个例外),因此添加可以更好地处理多个连接的反向代理可以显著提高后端服务器的性能。
  • 弹性——如果客户端直接连接到后端服务器并且该服务器出现故障,则所有当前连接(或尝试连接)到该服务器的客户端的请求都会失败。 反向代理服务器可以监视后端服务器的运行状况,并停止向故障服务器发送请求,直到其恢复服务。 客户端看不到错误,因为反向代理会自动将其请求发送到仍在运行的后端服务器。
  • 可扩展性——因为反向代理是后端服务器组的唯一“公共面孔”,所以您可以根据不断变化的流量负载添加和删除服务器。
  • 第 7 层路由——反向代理可以看到发往所有服务器的流量,并可以明智地决定将每个请求发送到何处,并根据需要修改请求和响应。 它可以根据请求中的某个 HTTP 标头、URL 的一部分、客户端的地理位置等做出路由决策。
  • 缓存——反向代理是进行缓存的好地方——在那里缓存内容通常比将所有请求发送到后端服务器并让每个后端服务器构建自己的缓存效率更高。
  • 其他功能——通过位于后端服务器前面,反向代理还可以执行其他功能,例如基于带宽或请求率的流量整形、连接限制、与各种授权方案的集成、活动监控等等。

使用 NGINX Plus 作为反向代理

NGINX Plus 为 NGINX Open Source 著名的 Web 服务器功能引入了更多功能,使 NGINX Plus 成为一个功能齐全的应用交付控制器 (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解密和加密,并且可以使用不同的证书对多个域名进行解密。 阅读更多

实时活动监控和记录

以 JSON 格式编码的 NGINX Plus 统计数据可通过简单的 HTTP 请求获取。 提供了仪表板网页来显示统计信息,或者您可以将它们提供给自定义或第三方监控工具,可以配置自定义格式的日志以进行本地日志记录和导出到系统日志。 阅读更多

还有更多

NGINX 还有很多功能,比如支持视频流、邮件代理支持、GeoIP 支持、无停机平稳重启和升级、流量整形、连接限制等等。 如需了解更多信息,请访问nginx.comnginx.org


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”