nginx http代理的核心是将代理从“通道”升级为“智能调度层”,通过精准缓存、优化连接模型、加速静态与动态内容交付、精细化路由与容错设计四大策略,减少后端压力、缩短链路耗时、复用资源并提升可用性。

Nginx 通过 HTTP 代理提升整体服务响应,核心不是简单转发请求,而是主动介入请求生命周期,减少后端压力、缩短链路耗时、复用资源并提前响应。关键在于把代理从“通道”变成“智能调度层”。
精准缓存代理,减少后端调用
对读多写少的接口(如城市列表、字典项、公告页),开启 proxy_cache 可直接拦截重复请求:
- 在 http 块中定义缓存区:
proxy_cache_path /var/cache/nginx/api_cache levels=1:2 keys_zone=api_cache:10m max_size=1g inactive=60m use_temp_path=off; - 在 location 中启用并控制行为:
-
proxy_cache_valid 200 302 10m;表示成功响应缓存 10 分钟 -
proxy_cache_use_stale error timeout http_502 http_503;允许在后端异常时返回旧缓存,保障可用性 -
proxy_cache_lock on;防止多个相同请求同时回源,避免缓存击穿
-
缓存生效前提:只缓存 GET 请求、响应头含 Cache-Control: public、不依赖 Cookie 或用户身份、内容更新频率低。
优化连接模型,降低传输延迟
代理层本身不能成为瓶颈,需匹配硬件与业务节奏:
-
worker_processes auto;自动适配 CPU 核心数 -
worker_connections 16384;提升单进程并发能力(需同步调高系统ulimit -n和net.core.somaxconn) -
keepalive_timeout 45s; keepalive_requests 1000;平衡连接复用率与内存占用 -
proxy_http_version 1.1; proxy_set_header Connection '';启用上游 Keep-Alive,避免每次请求重建连接
加速静态与动态内容交付
代理不只是转发动态 API,也承担静态资源分发职责:
- 对 JS/CSS/图片等资源启用强缓存:
location ~* \.(js|css|png|jpg)$ { expires 365d; add_header Cache-Control "public, immutable"; } - 开启零拷贝:
sendfile on; tcp_nopush on;减少内核态/用户态拷贝次数 - 启用 Gzip 压缩(但跳过已压缩格式):
gzip_types text/css application/javascript image/svg+xml; - 使用
open_file_cache缓存文件元信息,降低 stat 系统调用开销
精细化路由与容错设计
代理层可承担部分业务逻辑分流与降级能力:
- 用
upstream定义带健康检查的后端集群:server 10.0.1.10:8080 max_fails=3 fail_timeout=30s; - 配合
proxy_next_upstream error timeout http_502;实现自动故障转移 - 对高频低风险接口(如配置获取)设置短 TTL 缓存;对实时性要求高的接口(如订单状态)禁用缓存,但保留连接复用和压缩优化
不复杂但容易忽略











