NGINX作为一款高性能Web服务器,广受赞誉,实至名归。我想很多人都知道NGINX也可用作反向代理,但可能并不了解它的反向代理功能有多么强大。
什么是反向代理?
首先,我们不妨退一步,看看什么是代理服务器。我认为Wikipedia给出了一个很好的定义:
“代理服务器是一种服务器(计算机系统或应用程序),充当客户端与其他服务器之间的中介,代为处理客户端向其他服务器请求资源的操作。”
因此,代理服务器位于客户端与托管客户端所需数据的实际服务器之间。对于客户端而言,代理服务器就像实际的后端服务器;对于后端服务器而言,代理服务器则像客户端。关于反向代理服务器的定义,我们再次参考Wikipedia:
“反向代理是一种代理服务器,它代表客户端从一个或多个服务器获取资源。”
区别在于,代理服务器位于客户端与单个后端服务器之间,而反向代理服务器位于一个或多个后端服务器之前,并决定为每个请求使用哪个后端服务器。
使用反向代理有哪些优势?
为什么要使用反向代理服务器?它有许多优势:
- 并发处理:互联网应用通常涉及大量客户端,每个客户端都会打开多个连接,导致后端服务器需要处理数量庞大的连接。许多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也支持对HTTP/2进行负载均衡]和uwsgi进行负载均衡。了解详情。
健康检查
支持对后端服务器运行状况进行被动和主动监控。如果NGINX Plus无法连接到某个节点,该节点将被标记为已停机。还可以配置主动运行状况检查,定期检查后端节点。此外,还可以使用慢启动功能,让NGINX Plus逐步增加流向刚上线节点的流量,避免突发的大量流量使其不堪重负。了解详情。
请求路由
可以根据请求的任意部分路由流量,例如客户端IP地址、主机名、URI、查询字符串、标头等。
请求和响应重写
可以修改请求或响应的任何部分,包括标头、正文和URI。NGINX Plus还可以添加和删除标头。了解详情。
缓存
可以缓存响应,并配置要缓存的内容类型和缓存时长。还可以清除缓存中的项目。了解详情。
压缩
支持Gzip压缩,并可精细控制要压缩的内容以及何时使用压缩。了解详情。
SSL/TLS处理
支持SSL/TLS解密和加密,并可使用不同证书对多个域名进行解密。了解详情。
实时活动监控和日志记录
只需发送简单的HTTP请求,即可获取以JSON格式编码的NGINX Plus统计信息。您可以通过提供的仪表板网页查看这些统计信息,也可以将其传送到自定义或第三方监控工具。还可配置自定义格式的日志,用于本地日志记录或导出到syslog。了解详情。
更多功能
NGINX还提供许多其他功能,例如支持视频流、邮件代理和GeoIP,可在不中断服务的情况下平滑重启和升级,并支持流量整形、连接数限制等。有关更多信息,请访问nginx.com和nginx.org。
关于作者

相关博客文章
NGINX Plus R26 正式发布
NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。
