对许多零售商而言,COVID‑19疫情改变了消费者在节日期间的购物地点和方式。由于无法前往实体店,消费者比以往更多地涌向在线零售商,推动2020年电子商务销售额飙升至1,890亿美元,较2019年增长33%。距离今年的节日购物季已不足6个月,本文将介绍利用NGINX应对突发流量高峰的几种方法。
第1步:了解自身相较于竞争对手的市场地位
在更改技术栈之前,先了解需要将“网络旺季”的性能提升到什么程度,才能脱颖而出,而不只是勉强应对,这会很有帮助。首先,收集竞争网站的性能数据。页面加载时间可能是最重要的指标,因为如今许多缺乏耐心的用户会在网站加载时间超过3秒时离开网站。有许多工具可以测量加载时间,其中不少可免费使用。可以先查看Geekflare近期对11款测试工具的评测。
建议测量以下页面的加载时间:
- 主页
- 产品搜索结果
- 产品页面详情
- 点击“购买”按钮后显示的确认页面
测试大约6家竞争对手网站和您自己网站的关键页面只需几个小时。(测量下载时间前,请务必使用“Shift+Refresh”清除浏览器缓存。)获得结果后,接下来请执行以下操作:
- 衡量整体性能。在不同网站上完成从访问、搜索到购买的整个流程需要多长时间?
- 识别优势与不足。找出网站性能处于领先、具有竞争力或落后的具体方面。
- 关注功能差异。竞争对手如何通过附加功能提升购物体验?您的网站提供了哪些功能来打造差异化的用户体验?
- 制定计划。如果网站性能在一个或多个方面明显落后于竞争对手,应以达到其平均响应时间为目标;如果已经具备竞争力,则应努力争取领先。
第2步:像全球繁忙网站一样运行NGINX
今年早些时候,NGINX成为互联网上使用率领先的Web服务器。众多网站信任我们,使用NGINX交付网站和应用,我们深感荣幸,也期待获得您的信任。但NGINX不只是一款Web服务器,还是集多种功能于一体的软件,包括反向代理、负载均衡器、缓存和API网关。
NGINX的一项重要优势是能够优化进入网站的流量。可以把NGINX想象成一名门卫,在商店门口管理客流。它会让每位顾客(HTTP请求)有序排队并依次进入,将人行道上的拥挤混乱转变为店内顺畅有序的客流。顾客会被引导至心愿单中商品的具体位置,从而均匀分配流量并充分利用各项资源。
NGINX主要采用两种开箱即用的技术来实现这一点:
- 使用keepalive连接卸载HTTP,用于缓冲缓慢到达的HTTP请求,并仅在请求就绪后将其转发到后端服务器。与来自远程客户端的事务相比,由NGINX(位于高速本地网络中)发起的事务完成速度要快得多。
- 高级负载均衡,提供多种算法供选择,可优化流量分配并尽可能高效地利用服务器资源。
除了优化流量分配外,还可以通过以下4种方式利用NGINX优化网站,并防止流量激增时服务器过载。

继续阅读,了解以下内容:
利用缓存缩短网页响应时间
线上下单、到店取货,在线订购后到店自提,甚至提供多种客户付款方式,都能提高在线交易成功的可能性。内容缓存与NGINX结合使用,对Web流量也有类似效果。NGINX会自动存储发送给客户端的每个文件,并直接从缓存中响应之后对该文件的请求。缓存不仅能更快地向用户返回响应,还能减轻上游服务器的负载,因为服务器无需反复从头处理相同的请求。具体取决于应用,内容缓存可将内部流量最多减少至原来的1/100,从而降低应用服务所需的硬件容量。
有关缓存和示例配置的更多详情,请参阅博客文章《缓存和微缓存网站内容》和《NGINX和NGINX Plus缓存指南》。
通过连接数、速率和带宽控制管理访客流量
在客流高峰期,商店的门卫可能需要限制进店顾客人数。这可能是出于安全考虑(避免过度拥挤),也可能是为了向重要客户提供优先服务(VIP专属时段、仅限受邀者参加的促销活动等)。Web应用也需要采取类似措施。通过限制进入站点的流量,可以防止服务器过载,确保客户端及时访问所需资源。NGINX(在容器环境中则为NGINX Ingress Controller)提供了多种限制入站流量的方法,包括:
- 并发限制:限制转发到每台服务器的并发请求数,使其与各服务器有限的工作线程数或进程数相匹配
- 请求速率限制:按秒或按分钟限制每个客户端发出的请求,防止支付网关或复杂搜索等服务导致服务器过载(有关详细信息,请参阅博客文章《使用NGINX和NGINX Plus进行速率限制》)
- 带宽限制:控制客户端在每个连接中可下载的数据量
如有必要,可以区分不同类型的客户端。例如,商店的配送范围可能不包括亚洲,或者您希望优先处理购物车中已有商品的用户。可以利用Cookie、地理位置数据和其他参数,控制NGINX如何应用流量限制。
通过弹性扩展避免服务器过载
如果没有足够的基础设施,流量激增很容易导致服务器过载。NGINX的轻量级事件驱动架构可充分利用现有基础设施,尽可能提升应用交付性能。我们的规模估算指南涵盖NGINX Ingress Controller以及在裸机和虚拟化环境中部署的NGINX Plus,可帮助您准确估算为实现预期性能和规模所需的运营支出。
NGINX还提供其他功能,DevOps团队可利用这些功能有效扩展容量,应对流量激增:
- 在云环境中部署NGINX和应用。NGINX已在多个主流云环境的市场中上架,例如AWS、Google Cloud Platform和Microsoft Azure。每家云服务提供商都支持自动扩缩容,可根据需求变化调整应用实例数量。有关更多信息,请参阅以下平台的自动扩缩容文档:AWS、GCP和Azure。
- 在Kubernetes环境中部署容器。NGINX Ingress Controller和NGINX Service Mesh提供多项功能,可增强Kubernetes应用的韧性。您可以根据用户需求横向扩展应用Pod,同时几乎不会给实时用户增加延迟。
- 使用NGINX Plus API动态扩展后端服务器,这些服务器由NGINX Plus进行负载均衡。
借助内置安全功能保护客户数据
确保交易安全是任何网站的基本要求,对于处理信用卡信息的在线零售商尤其如此。Target等遭遇过不幸事件的零售商对此深有体会:数据泄露可能损害品牌声誉并引发诉讼。Target采取措施应对2014年的数据泄露事件,通过增强功能提高了可见性并强化了安全性。实施以下措施,提供安全性出众的购物体验,从而在竞争中脱颖而出:
- 一种可见性策略,帮助您及早发现漏洞
- 将身份验证和授权集中在负载均衡器和Ingress控制器上,从而实施易于配置且可靠的单点登录(SSO)方案
- 一款轻量而强大的WAF,其防护范围不仅涵盖OWASP十大风险和PCI DDS漏洞
- 一个服务网格,确保所有通信均采用mTLS加密,避免敏感数据在线路中传输而被黑客窃取
现在,您已准备就绪
现在为您的Web资产部署我们的企业级解决方案,即可从容应对2021年年末购物季在线上线下带来的各种挑战。
我们的所有商业解决方案均提供30天免费试用:
- F5 NGINX Plus和NGINX App Protect
- F5 NGINX Ingress Controller和NGINX App Protect
- F5 NGINX Management Suite [原名为NGINX Controller和NGINX Instance Manager]
也可以从免费开源产品开始:
本博客包含Owen Garrett和Floyd Smith的贡献。
相关博客文章
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的开源产品和商业产品。
