nginx http代理通过缓存、keepalive连接复用、gzip压缩及直连fastcgi等协同机制提升效率:proxy_cache减少后端调用,keepalive降低tcp开销,gzip减小传输体积,fastcgi_pass替代proxy_pass避免冗余跳转。

Nginx 的 HTTP 代理本身不直接“提升”效率,而是通过合理配置和协同机制,显著降低后端压力、减少重复开销、加快响应路径。关键不在代理动作本身,而在它如何与缓存、压缩、连接复用、FastCGI 协同工作。
启用代理缓存减少后端调用
当 Nginx 作为反向代理时,对后端(如 PHP-FPM、应用服务器)的重复请求可被拦截并返回本地缓存,避免每次都要穿透到上游。
-
proxy_cache_path定义缓存存储位置、内存索引区(keys_zone)、最大容量和失效策略 -
proxy_cache_valid按响应状态码设置不同缓存时长(如200 302 10m,404 1m) -
proxy_cache_use_stale可在后端异常时返回过期缓存,保障可用性
复用 keepalive 连接降低 TCP 开销
默认情况下,Nginx 与后端建立短连接,每次请求都经历三次握手+挥手。启用 keepalive 后:
- 在
upstream块中配置keepalive 32;(保持 32 个空闲连接) - 对应 location 中添加
proxy_http_version 1.1;和proxy_set_header Connection '';
这样多个请求可复用同一 TCP 连接,尤其适合高频 API 或微服务间调用。
配合 Gzip 压缩减小传输体积
代理过程本身不压缩,但 Nginx 可在转发前压缩响应体,大幅降低带宽占用和客户端等待时间:
- 开启
gzip on; - 设置
gzip_types明确压缩范围(如text/html application/json application/javascript) -
gzip_comp_level 4–6平衡压缩率与 CPU 开销
避免代理链路冗余,直连处理逻辑
常见低效模式是:请求 → Nginx rewrite → 代理给本机 Nginx → 再代理给 PHP-FPM(形成双跳)。正确做法是让 Nginx 直接对接 FastCGI:
- 用
fastcgi_pass替代proxy_pass处理 PHP 请求 - 配合
fastcgi_param SCRIPT_FILENAME和fastcgi_param REQUEST_URI确保脚本路径与原始 URI 一致 - 使用
try_files+ named location 实现统一入口,避免重复 rewrite 和 proxy 跳转
不复杂但容易忽略











