Nginx 详解 Part3 — return/代理/健康检查/负载均衡算法

来源:raw/day43 nginx详解part3.md — 林海峰 Nginx 课程第三部分 主题:return 指令(301 vs 302)、root vs alias、正向/透明/反向代理、upstream 健康检查(max_fails/fail_timeout/proxy_next_upstream)、慢启动、负载均衡算法


结构总览

return 指令
  ├─ 语法:return code [text] / return code URL / return URL
  ├─ 301 永久重定向 vs 302 临时重定向
  └─ 适用建议:域名迁移/HTTPS 用 301,临时活动页用 302
root vs alias(路径拼接差异)
三种代理类型
  ├─ 正向代理(代理客户端,需配置)
  ├─ 透明代理(正向代理变种,对用户透明,同内网)
  └─ 反向代理(代理服务端,Nginx 主要功能)
Upstream 健康检查
  ├─ max_fails + fail_timeout:端口级健康检测
  ├─ proxy_next_upstream:应用层错误响应转发
  └─ slow_start:慢启动(Nginx Plus 支持,开源版需手动实现)
负载均衡算法
  ├─ 轮询(默认) / weight(权重) / ip_hash(会话保持)
  └─ least_conn(最少连接) / url_hash / random

关键要点

301 vs 302: 301 被浏览器缓存,后续直接走新地址,SEO 权重转移,适合域名永久迁移和 HTTP→HTTPS;302 不缓存,每次都请求原服务器,适合临时活动页和 AB 测试。生产场景简单跳转推荐用 return 而非 rewrite(性能更好)。

三种代理对比: 正向代理代理客户端(需客户端配置代理),反向代理代理服务端(Nginx 主要角色),透明代理对用户完全透明(需同内网,用于上网行为分析)。

健康检查双重机制: max_fails + fail_timeout 检测端口级别的连通性(进程挂掉、网络不通);proxy_next_upstream 检测应用层错误(500/502/503/504/403/404,进程活着但返回错误)。两者配合实现全面故障检测。

慢启动: 新加入的服务器逐步接收流量,防止连接池被瞬间打满。Nginx 开源版不支持 slow_start,可通过流量低峰期上线、手动逐步调高权重或使用 Haproxy 替代。


相关页面