Nginx 改变了什么:互联网入口处的交通警察
这是「朴素科技」的第五篇文章。 上次我们聊了 Linux——几乎一切软件脚下的地基。 今天再往上走一层,去看站在网络入口、把请求分发到无数服务器的那个角色:Nginx,以及它背后的负载均衡。
一、先回答一个日常问题:你打开网页时,到底在跟谁说话?
在浏览器地址栏敲下 baidu.com 或 bilibili.com,回车——
看起来像是你的电脑直接找到了「那台服务器」。
真实情况几乎从来不是这样。
像样的网站背后,不是一台机器,而是成百上千台机器。 它们可能是同一机房里的几台,也可能是全球各地的数据中心。 你的请求,会先撞上一台入口机器,由它决定:
- 这个请求该交给哪一台后端服务器?
- 是直接返回静态页面,还是转发到业务逻辑?
- 后端某台机器挂了,是不是应该悄悄换一台?
这个站在门口、负责「收下请求、分发出去」的软件,就是反向代理 / 负载均衡器。 而 Nginx,是这个角色里最著名的名字之一。
简单说:Nginx 是互联网入口处的交通警察。 它不生产内容,只负责让车流有序、顺畅、不至于在门口堵死。
二、Nginx 是什么:一个为「高并发」而生的工具
Nginx(读作 “engine-x”)最初是一个 Web 服务器,后来逐渐长成事实上的:
- 反向代理(Reverse Proxy):对外统一收请求,对内转发给后端服务;
- 负载均衡器(Load Balancer):把流量摊到多台后端上;
- HTTP 缓存 / SSL 终结 / 静态资源服务 的常用底座。
它的核心设计目标只有一个:在有限的硬件上,扛住尽可能多的并发连接。
一个极简的反向代理配置,大概长这样:
http {
upstream app {
server 10.0.0.11:8080;
server 10.0.0.12:8080;
server 10.0.0.13:8080;
}
server {
listen 80;
location / {
proxy_pass http://app;
}
}
}
三台后端服务器,被 upstream 打成一组;
外面的世界只看到一个入口,请求进来后按策略轮流分给三台。
增加一台机器,对用户几乎无感——这正是负载均衡的意义。
常见的分发策略也不复杂:
- 轮询(Round Robin):一台一棒,公平轮流;
- 加权轮询:性能强的机器多分一点;
- 最少连接:谁当前闲,就给谁;
- IP Hash:同一访问者尽量落到同一台,方便保持会话。
这些算法不炫,但就是它们让「双十一零点」和「春运抢票」不至于在一秒钟内把某台机器压垮。
三、Igor Sysoev 与 C10K 难题
Nginx 的故事,要从俄罗斯工程师 Igor Sysoev(伊戈尔·赛索耶夫) 说起。
2000 年代初,互联网用户增长极快,Web 服务器普遍遇到一个著名难题—— C10K Problem(Concurrency 10,000): 如何让一台服务器同时维持 一万个 网络连接?
当时的主流服务器是 Apache,它的模型在高并发下会消耗大量内存和进程资源。 连接一多,机器就被「自己人」拖垮。
Igor Sysoev 当时在俄罗斯门户网站 Rambler 工作, 他从 2002 年开始写一个新服务器,2004 年正式公开发布,这就是 Nginx。
Nginx 的关键突破在于 事件驱动、异步非阻塞 的架构:
- 不给每个连接开一个进程/线程;
- 而是用少量 worker 进程,靠事件循环同时盯着成千上万个连接;
- 谁有数据来了就处理谁,谁空闲就静静等着。
结果是:同样一台机器,Nginx 能扛的连接数远高于传统模型,内存占用却低得多。 这让普通公司也有机会用几台便宜服务器,扛住过去只有大厂才扛得住的流量。
Nginx 很快在全球流行。开源版免费、性能强、配置又足够直观, 成了无数网站、API 网关、CDN 回源、容器入口的默认选择。
四、Nginx 公司与 F5:开源明星的商业化结局
技术开源,但开发要吃饭。Nginx 后来成立了商业公司 NGINX, Inc., 在开源版之外推出收费的 NGINX Plus:增加管理界面、动态配置、更完善的支持与监控。
2019 年,美国网络安全与应用交付厂商 F5 Networks 以约 6.7 亿美元 收购了 NGINX, Inc.。
F5 是谁?它是应用交付(ADC)领域的老牌厂商, 最出名的产品是硬件负载均衡器 BIG-IP—— 很多银行、运营商、大企业机房里那台「很贵、很重、但很重要」的设备,就是它。 对 F5 来说,买下 Nginx,等于同时拿到了:
- 开源世界最广的入口流量份额;
- 云原生时代的话语权;
- 从硬件 ADC 向软件 / 云转型的一张关键门票。
收购之后的故事并非一帆风顺。 开源社区天然担心:商业公司会不会把开源版变成引流工具?会不会削弱社区? 也出现过人员变动、路线调整与社区情绪波动。 Nginx 的开源仓库后来转移到 nginx GitHub 组织继续维护, F5 仍表示会继续支持开源版,同时把商业化重心放在 NGINX Plus 与云方案上。
还有一段更戏剧性的插曲:2019 年底,俄罗斯警方曾突击搜查 NGINX 莫斯科办公室, Igor Sysoev 一度被带走调查,起因与早年在 Rambler 工作期间的代码权属争议有关。 这件事后来平息,但提醒了所有人: 开源项目的产权与雇佣背景,远比 README 上的一行 License 复杂。
今天的现实是:Nginx 仍是全球使用最广的 Web 服务器 / 反向代理之一; 与此同时,它也只是 F5 更大产品版图中的一块。 开源项目长大后如何被商业接住、又不被商业吞噬—— Nginx 是一个非常值得观察的样本。
五、其他代理与负载均衡工具:入口从不只有一条路
Nginx 很强,但互联网入口从来不是垄断赛道。同一位置,还有许多「同行」。
1. HAProxy:纯粹的负载均衡强者
如果说 Nginx 是「会做很多事的入口」, HAProxy 则更像「专精分发的高手」。 它在 TCP/HTTP 负载均衡上性能极强,配置以稳定性著称, 大量电商、社交、游戏公司在核心入口使用它。 Nginx 与 HAProxy 经常不是「二选一」,而是分层配合: Nginx 做统一接入与路由,HAProxy 做更深层的流量调度。
2. Apache HTTP Server:经典前辈
在 Nginx 崛起之前,Apache 统治了 Web 服务器很多年。
模块生态丰富,.htaccess 灵活,至今仍有大量存量站点。
只是在「高并发反向代理」这个战场,它把王座让给了更现代的设计。
3. Caddy:把 HTTPS 变成默认项
Caddy 的口号气质很鲜明:简单、默认自动 HTTPS(Let’s Encrypt)。 个人博客、小团队服务、内部工具用它很省心—— 你不必先成为证书专家,才能给网站上锁。
4. Traefik:长在容器里的入口
Docker / Kubernetes 时代,Traefik 因「服务发现」而生: 容器起来、IP 变了、实例扩缩容了,入口配置自动跟着变。 它不是性能纸面冠军,但非常贴合云原生运维的痛点。
5. Envoy:服务网格里的神经末梢
Envoy 由 Lyft 开源,后来成为 Istio 等服务网格的核心组件。 它不只站在「用户 → 服务」的门口,还深入「服务 → 服务」的内部通信, 做可观测性、熔断、重试、流量镜像。 如果说 Nginx 像城市主干道交警,Envoy 更像渗透到每个街区的智能路网。
6. OpenResty:把 Nginx 变成可编程平台
OpenResty 把 Nginx 与 Lua 嵌在一起, 让入口层能写业务逻辑:鉴权、限流、灰度、动态改写。 很多国内大厂的网关,底下就是 OpenResty 或深度魔改的 Nginx。
7. 云厂商的托管负载均衡
AWS 的 ALB/NLB、阿里云 SLB、腾讯云 CLB、Cloudflare 的边缘网络…… 公有云把负载均衡做成「开箱即用的服务」。 你仍然需要理解原理,但不再需要自己运维那几台入口机器。
一个朴素的观察:工具越来越多,本质问题没变—— 请求来了,怎么找到活着的、合适的后端,并在故障时悄悄换人。
六、负载均衡对普通人的意义:为什么你很少感觉到它
聊了这么多组件,更值得问一句:这和我有什么关系?
关系在于:你几乎感觉不到它,才是它最成功的地方。
-
它让「打不开」变成小概率事件。 没有负载均衡时,一台服务器挂了,网站就没了。 有了它,挂掉的机器会被自动踢出队伍,请求转到健康机器—— 你只觉得页面慢了一秒,甚至毫无察觉。
-
它让流量洪峰不至于瞬间压垮一切。 春晚红包、双十一零点、爆款游戏开服、热点新闻刷屏…… 这些时刻的共同点是:流量在几秒内暴涨成百上千倍。 负载均衡 + 弹性扩容,是背后那套「看起来什么都没发生」的关键机制。
-
它让小团队也能提供「大厂级」稳定服务。 过去,全球加速、容灾、灰度发布是大公司的专属; 今天,几行 Nginx 配置、一个云 SLB,创业公司也能有入口高可用。
-
它默默承担了安全与秩序的一部分。 SSL 证书卸载、限流、防刷、把内网服务与公网隔开…… 入口层做的很多事,用户永远不会看见,但攻击者会撞上。
-
它让互联网服务有一种「理应永远在」的错觉。 这种错觉很奢侈,也很现代。 背后是无数入口节点在默默换人、重试、分流。
七、一点朴素的感想
写这个系列时,我一直在找那些「很少上新闻,但停了世界会安静下来」的技术。
Nginx 就是典型的一例。 它的吉祥物甚至都不算出名,界面往往只是一段段配置文本; 可当你凌晨点开一个页面、顺利加载,多半有一台看不见的入口机, 在你和几百台后端之间轻轻做了一个决定。
在我自己的小折腾里,Nginx 也出现过——
博客要套 HTTPS、要做反向代理、要让内网服务以体面的方式暴露出来,
最后经常落在同一段 location / 和 proxy_pass 上。
它不华丽,但足够可靠:改完 reload,然后生活继续。
从 Docker 到 Kubernetes,从 S3 到 Linux,再到今天的 Nginx—— 这条线索其实很清晰:
应用被打包 → 被编排 → 数据有了去处 → 系统有了地基 → 请求有了入口。
朴素的科技,正是如此。 它不抢走功劳,只把更上面一层的成功率悄悄抬高一点。
下一次,我们再顺着入口往里看一层。
参考资料
- nginx 官方文档:nginx.org
- Nginx, Inc. 与 F5 Networks 收购公告(2019)
- HAProxy / Caddy / Traefik / Envoy / OpenResty 官方文档
- The C10K problem(Dan Kegel)
- F5 BIG-IP 产品资料
— RCLiLong,写于 2026 年秋