Nginx 是什么?它有哪些应用场景?

Nginx 是什么?它有哪些应用场景? 一、Nginx 是什么一句话定义Nginx 是一个高性能的 HTTP 服务器和反向代理服务器同时支持 IMAP/POP3 代理以高并发、低内存、稳定性强著称。核心特点异步非阻塞事件驱动基于 epoll/kqueue单机可支撑数万甚至十万级并发连接轻量级一个 worker 进程只占用几 MB 内存模块化设计支持丰富的扩展模块如限流、缓存、WAF热部署不中断服务的情况下升级配置或二进制文件作者Igor Sysoev俄罗斯2004 年开源最初为解决 C10K 问题单机 1 万并发连接。二、Nginx 的核心应用场景1. 静态资源服务器Web Server直接托管 HTML、CSS、JS、图片、视频等静态文件优势高并发静态文件处理能力远超 Apache传统进程/线程模型支持 sendfile 零拷贝减少内核态到用户态的数据拷贝配置示例server { listen 80; root /var/www/html; location /images/ { expires 30d; # 缓存30天 } }2. 反向代理Reverse Proxy接收客户端请求转发给后端服务器如 Tomcat、Spring Boot、Go 服务再将结果返回客户端核心价值隐藏后端真实 IP提高安全性负载均衡分发请求到多个后端故障转移某个后端挂了自动切换到其他节点配置示例upstream backend { server 192.168.1.10:8080 weight3; server 192.168.1.11:8080 weight1; } server { location /api/ { proxy_pass http://backend; proxy_set_header Host $host; } }3. 负载均衡Load Balancer将流量分发到多个上游服务器支持多种算法支持的算法算法说明轮询默认依次分发加权轮询按权重比例分配IP Hash同一客户端 IP 固定到同一台服务器解决 session 问题最少连接转发给当前连接数最少的服务器URL Hash同一 URL 固定到同一服务器适合缓存场景配置示例最少连接upstream backend { least_conn; server backend1.example.com; server backend2.example.com; }4. 动静分离动态请求如.jsp、.php交给后端应用服务器静态请求如图片、CSS由 Nginx 直接处理好处减轻后端压力静态资源利用 Nginx 的高性能缓存配置示例location ~ \.(jpg|png|css|js)$ { root /static; expires 7d; } location ~ \.php$ { proxy_pass http://php_backend; }5. 缓存加速反向代理缓存缓存后端服务的响应结果减少重复请求应用场景缓存 API 响应如商品详情、配置接口缓存 CDN 回源结果配置示例proxy_cache_path /data/nginx/cache levels1:2 keys_zonemycache:10m; location / { proxy_cache mycache; proxy_cache_valid 200 302 10m; proxy_cache_valid 404 1m; proxy_pass http://backend; }6. SSL/TLS 终结器SSL Termination处理 HTTPS 加密/解密后端服务使用 HTTP 即可价值统一证书管理减轻后端加密解密开销支持 HTTP/2 协商配置示例server { listen 443 ssl; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://backend; } }7. 限流与安全防护限流场景限制请求频率防止恶意刷接口限制并发连接数保护后端资源配置示例# 限制每个 IP 每秒最多 10 个请求 limit_req_zone $binary_remote_addr zonemylimit:10m rate10r/s; location /api/ { limit_req zonemylimit burst20 nodelay; proxy_pass http://backend; } # 限制每个 IP 最多 10 个并发连接 limit_conn_zone $binary_remote_addr zoneaddr:10m; location / { limit_conn addr 10; }8. 虚拟主机Virtual Hosting同一台 Nginx 上运行多个独立的网站配置示例server { listen 80; server_name example.com; root /var/www/example; } server { listen 80; server_name test.com; root /var/www/test; }9. WebSocket 代理支持 WebSocket 协议升级Upgrade配置示例location /ws/ { proxy_pass http://websocket_backend; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; }10. 日志与监控自定义日志格式记录请求耗时、状态码、用户 IP集成 Prometheus Exporter如nginx-prometheus-exporter三、Nginx 与其他产品对比面试加分对比项NginxApacheHAProxyLVS定位Web服务器/反向代理传统Web服务器负载均衡4层负载均衡并发模型异步事件驱动进程/线程事件驱动内核级转发并发能力极高10K中等极高最高百万级7层能力强强强无4层能力一般1.9支持弱强极强配置复杂度低中中高选型建议静态文件 反向代理 → Nginx需要强大 4 层负载均衡 → LVS Keepalived需要复杂 7 层路由规则 → HAProxy 或 Nginx传统 PHP 应用mod_php → Apache四、典型架构示例体现应用组合用户 → DNS → CDN → Nginx边界层 ├─ 静态文件 → 直接返回 ├─ 反向代理 → 业务网关Spring Cloud Gateway ├─ 负载均衡 → 后端微服务集群 ├─ SSL 终结 ├─ 限流防刷 └─ 缓存 → Redis/本地缓存五、总结“Nginx 是一个高性能的反向代理和 Web 服务器基于事件驱动模型解决 C10K 问题。核心应用场景包括静态资源托管、反向代理、负载均衡、动静分离、SSL 终结、限流缓存、虚拟主机等。在实际架构中通常把它放在最前端作为流量入口负责请求分发、安全防护和性能加速。”–