5月30日 15:53

什么是 Nginx?它为什么适合高并发?

Nginx 是一个高性能 Web 服务器,也常用作反向代理、负载均衡器、静态资源服务器和 API 网关。它适合高并发,核心原因是事件驱动和异步非阻塞 I/O:少量 worker 进程通过事件循环处理大量连接,不需要给每个连接都分配一个线程。简单说,Apache 更像“一个请求安排一个人盯着”,Nginx 更像“少量工作人员按事件通知处理”,长连接和静态资源场景下资源消耗更低。

追问

Nginx 主要解决什么问题?

它常解决三件事:对外提供 HTTP 服务,把请求转发给后端,以及把流量分摊到多台服务器。实际项目里还会让它处理 HTTPS 终止、静态资源缓存、限流、压缩、访问日志和灰度路由。

为什么说 Nginx 适合高并发?

它不为每个连接创建独立线程,而是通过 worker 进程和事件循环处理连接状态变化。大量连接处于等待网络 I/O 时,Nginx 可以把 CPU 留给真正有事件的连接,所以并发连接数上来后仍然比较稳。

Nginx 和 Apache 有什么区别?

Nginx 更擅长高并发连接、反向代理和静态资源;Apache 模块生态成熟,动态内容处理能力强。现代架构里常见做法是 Nginx 放入口层,业务逻辑交给 Node.js、Java、Go、PHP-FPM 等后端服务。

反向代理和负载均衡分别是什么?

反向代理是客户端只访问 Nginx,由 Nginx 转发到真实后端;负载均衡是在多个后端实例之间分配请求。两者经常一起用:Nginx 既隐藏后端地址,也按权重、轮询、IP Hash 等策略分流。

实际项目里怎么用?

常见链路是“用户 → CDN/云负载均衡 → Nginx → 应用服务”。Nginx 负责入口层的 TLS、路由、缓存、限流和日志;后端只关注业务处理。排查问题时也通常先看 Nginx access.log、error.log 和 upstream 响应时间。

写段配置

nginx
upstream app { server 127.0.0.1:3000; server 127.0.0.1:3001; } server { listen 80; server_name example.com; location /static/ { root /var/www; expires 7d; } location /api/ { proxy_pass http://app; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
标签:Nginx