欢迎光临
我们一直在努力

Nginx的介绍和使用清单

目录

一、Nginx介绍

二、企业中 Nginx 的使用

三、Nginx 运维 / SRE 版知识点清单

一、Nginx介绍

Nginx(发音 “engine-x”)是一款高性能的开源 Web 服务器,也常用作反向代理、负载均衡和 HTTP 缓存。

作用

角色作用

Web 服务器

直接对外提供静态文件(HTML、CSS、图片等)

反向代理

把请求转发给后端(如 Node、Python、Java),对外只暴露 Nginx

负载均衡

把流量分到多台后端服务器

SSL 终结

在入口处理 HTTPS,后端可走 HTTP

优点

  • 高并发、低资源占用:事件驱动、异步非阻塞,适合大量连接
  • 配置简单:一个 nginx.conf 就能管站点、代理、限流等
  • 稳定成熟:生产环境里非常普遍

典型架构

用户 → Nginx(80/443)→ 静态文件                                         → 或转发到后端应用(如 :3000、:8080)

核心概念

  • server:一个虚拟主机(域名 / 端口)
  • location:按 URL 路径匹配规则
  • proxy_pass:反向代理到上游服务
  • upstream:定义一组后端服务器(负载均衡用)

最小配置示例

server {
listen 80; # 监听的端口
server_name example.com; # 虚拟主机的名字

location / {
root /var/www/html;
index index.html;
}

location /api/ {
proxy_pass http://127.0.0.1:3000/; # 反向代理
}
}

含义:根路径返回静态页面;/api/ 转发给本机 3000 端口的应用。

总结:Nginx 站在最前面,负责接流量、发静态、转后端、做负载和 HTTPS。

二、企业中 Nginx 的使用

企业里 Nginx 几乎总是放在流量入口,很少当“唯一应用服务器”。

一、用法

1. 统一入口 / 反向代理(最常见)

客户端

→ CDN / WAF(可选)

→ Nginx / Ingress(入口)

→ 后端服务(Java / Go / Node / 微服务)

典型职责:

  • 对外只暴露 80/443
  • 按域名、路径把请求转到不同服务
  • 统一加 HTTPS、日志、限流、鉴权头

server {
listen 443 ssl;
server_name api.company.com;

location /user/ {
proxy_pass http://user-service;
}
location /order/ {
proxy_pass http://order-service;
}
}

2. 静态资源托管

官网、运营页、前端打包产物(dist/)由 Nginx 直接提供:

  • HTML / JS / CSS / 图片 / 字体
  • 开启 gzip/brotli、缓存头、try_files 支持 SPA

location / {
root /data/www/app;
try_files $uri $uri/ /index.html;
}

3. 负载均衡

后端多实例时,Nginx 做分发:

upstream app_backend {
least_conn;
server 10.0.1.11:8080 weight=3;
server 10.0.1.12:8080 weight=2;
server 10.0.1.13:8080 backup;
}

server {
location / {
proxy_pass http://app_backend;
}
}

常见算法:round-robin、least_conn、ip_hash(会话粘滞)。

4. HTTPS / 证书终结

企业标配:

  • 证书挂在 Nginx(或网关)上
  • 后端内网走 HTTP / mTLS
  • 强制 HTTP→HTTPS、HSTS

5. 灰度 / 蓝绿 / 金丝雀

按 Header、Cookie、IP、百分比切流量:

# 简化示意:带灰度 cookie 的走新版本
if ($cookie_canary = "1") {
proxy_pass http://app_canary;
}

更复杂场景常配合 OpenResty、Ingress Controller、Service Mesh。

6. API 网关轻量能力

不是完整 API Gateway,但企业常让 Nginx 承担一部分:

  • 路径改写、Header 注入
  • IP 白名单 / 黑名单
  • 基础鉴权(Basic Auth、JWT 校验多靠模块或上游)
  • 限流限连
  • 跨域 CORS

7. 与 Kubernetes 结合

  • Ingress-Nginx / Nginx Ingress Controller
  • 每个 Ingress 规则最终变成 Nginx 配置
  • 负责集群南北向流量

8. 内网场景

  • 管理后台入口
  • 跳板式反向代理(内网系统统一域名)
  • 文件下载 / 大文件加速(sendfile、断点续传)

9. 高可用部署形态

形态说明

主备 + Keepalived

VIP 漂移,单机房常见

多机 + L4(SLB/F5)

云上很常见:SLB → 多台 Nginx

容器化多副本

K8s Deployment + Service

CDN 前置

静态/边缘缓存,源站仍是 Nginx

二、知识体系

按优先级分层,从“能上线”到“能扛事”。

A. 基础必会

1. 进程与架构
  • Master / Worker 模型
  • Worker 数与 CPU 核数关系
  • 事件驱动、非阻塞 I/O 为什么能扛高并发
  • 配置热加载:nginx -t → nginx -s reload
2. 配置结构

main  └─ events  └─ http      ├─ upstream      ├─ map      └─ server          └─ location

要清楚:指令作用域(哪些写在 http,哪些只能在 server/location)。

3. server / location 匹配规则
  • listen + server_name 如何选虚拟主机
  • location 优先级:精确 = > 前缀 ^~ > 正则 ~/~* > 普通前缀
  • root vs alias
  • try_files(SPA、静态站必备)
4. 反向代理核心

proxy_pass

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout

proxy_send_timeout

proxy_read_timeout

proxy_buffering

client_max_body_size

理解:

  • proxy_pass 末尾有无 / 对路径改写的影响
  • 为什么后端拿到的 IP/协议可能不对(没传 X-Forwarded-*)
  • 超时、缓冲、大文件上传失败怎么查
5. 静态与压缩缓存
  • expires / Cache-Control
  • gzip / brotli
  • sendfile、tcp_nopush、tcp_nodelay
  • 静态资源版本号与长期缓存策略
6. HTTPS
  • 证书、私钥、中间证书链
  • TLS 版本与 cipher(安全基线)
  • HTTP/2、OCSP Stapling(进阶)
  • 强制跳转与 HSTS 风险(配错会“锁死”域名)
7. 日志与排障
  • access_log / error_log
  • 自定义 log_format(加 request_id、上游耗时)
  • 常见状态码:502/504(上游挂/超时)、413(上传过大)、499(客户端断开)
  • nginx -T 查看最终生效配置

B. 企业生产进阶(中高级)

8. 负载均衡与健康检查
  • upstream 权重、backup、down
  • ip_hash / sticky(会话)
  • 被动失败检测:max_fails、fail_timeout
  • 主动健康检查(开源版弱,商业版/OpenResty/Ingress 更强)
9. 限流限连与防刷

limit_req_zone $binary_remote_addr zone=api_limit:10m rate=10r/s;

limit_conn_zone $binary_remote_addr zone=addr:10m;

limit_req zone=api_limit burst=20 nodelay;

limit_conn addr 20;

理解:

  • rate、burst、nodelay 含义
  • 按 IP / 用户 / API 维度限流
  • 与 WAF、网关限流的分工
10. 安全加固
  • 隐藏版本号 server_tokens off
  • 方法限制(禁 TRACE 等)
  • IP allow/deny
  • 危险目录禁止访问(.git、备份文件)
  • 请求头大小、URI 长度限制
  • SSRF / 开放代理风险(错误 proxy_pass 变量)
  • TLS 与安全响应头:X-Frame-Options、CSP 等(常在 Nginx 统一加)
11. 改写与路由
  • rewrite、return
  • map(强烈推荐,替代一堆 if)
  • 为什么企业规范常写:尽量少用 if
12. 变量与内部机制
  • $host / $http_host / $uri / $request_uri 区别
  • $remote_addr vs 真实客户端 IP(real_ip 模块 + 可信代理)
  • $upstream_addr、$upstream_status、$upstream_response_time
13. 性能调优方向
  • worker_processes、worker_connections
  • 文件描述符上限
  • keepalive 到上游:keepalive in upstream + proxy_http_version 1.1
  • 缓冲与临时文件(大响应、慢客户端)
  • 连接耗尽、队列打满的表现
14. 配置工程化

企业不会手改一台机器的 conf,而是:

  • 配置分片:conf.d/、sites-enabled/
  • Ansible / Salt / 镜像构建注入配置
  • CI 里跑 nginx -t
  • 灰度发布配置、回滚
  • 模板化(Helm values → Ingress / ConfigMap)

C. 架构关联知识(理解“Nginx 在系统中的位置”)

15. 和周边组件怎么分工
组件更擅长Nginx 更擅长

CDN

全球缓存、抗攻击边缘

源站接入、动态反代

SLB/L4

四层转发、高可用

七层路由、TLS、改写

API Gateway

鉴权、计费、协议转换

高性能反代、静态、TLS

WAF

规则防护、Bot

基础限流/IP 控制

Service Mesh

东西向、mTLS、重试

南北向入口

16. 微服务 / K8s 必懂
  • Ingress 规则与注解(超时、正文大小、会话亲和)
  • 服务发现变化时上游如何更新
  • 就绪探针失败时流量摘除
  • WebSocket / gRPC 反代要点(升级头、HTTP/2)
17. 可观测性
  • 访问日志进 ELK / Loki
  • 指标:QPS、延迟、5xx、上游耗时(Prometheus exporter)
  • Trace:注入 / 传递 X-Request-ID

三、按角色看“要学多深”

角色重点

前端

静态部署、try_files、缓存、gzip、HTTPS、CORS、代理到本地/测试环境

后端开发

反代头、超时、上传大小、WebSocket、路径改写、502/504 排查

运维 / SRE

全套:HA、性能、安全、日志指标、配置发布、排障

架构师

入口分层、与 CDN/网关/Mesh 边界、多活与灰度流量策略

四、建议学习路径(可执行)

  • 本地搭一台:静态站 + 反代一个后端
  • 刻意练匹配:多个 server_name / location,搞清谁命中
  • 上 HTTPS + 日志:自己看 access/error 定位问题
  • 加 upstream + 限流:模拟一台挂掉、突发流量
  • 做一份生产 checklist:超时、body 大小、真实 IP、keepalive、安全头
  • 再学 Ingress / OpenResty:对应云原生或复杂网关需求
  • 五、企业生产配置 Checklist

    上线前至少确认:

  • nginx -t 通过,reload 无损
  • HTTPS 证书链完整,HTTP 自动跳转正确
  • Host / X-Forwarded-* / 真实 IP 正确
  • client_max_body_size 与业务上传一致
  • proxy_read_timeout 覆盖最长接口
  • 上游 keepalive 已开
  • 限流与连接数有兜底
  • 日志含 request id、上游状态与耗时
  • 隐藏版本、禁敏感路径
  • 502/504 有监控告警与扩容/摘除预案
  • 总结

    企业用 Nginx,本质是“流量入口与流量治理”:反代、TLS、静态、负载、限流、日志; 要掌握的核心,是配置模型 + 反代细节 + 匹配规则 + 超时/头/真实 IP + 安全限流 + 排障与高可用,而不是背一堆指令。

    三、Nginx 运维 / SRE 版知识点清单

    面向:日常接流量、排障、变更、保可用性。

    SRE 视角下 Nginx 的定位:

    每天真正在管的是:

  • 入口是否可用(VIP / SLB / Ingress 后面的 Nginx)
  • 流量是否按预期路由(域名、路径、灰度)
  • 后端是否被正确保护(超时、限流、隔离)
  • 出了问题能否 5 分钟内定位(日志、指标、配置差量)
  • 核心不是“会写 conf”,而是:变更可控、故障可观测、回滚可快速。

    场景 A:新站点 / 新域名上线

    会做的事

    • 加 server、证书、反代或静态目录
    • 配 DNS / SLB 转发
    • 灰度切流、观察 4xx/5xx

    必会知识点

    • listen / server_name 匹配(默认 server 陷阱)
    • root vs alias、try_files(SPA)
    • proxy_pass 路径拼接规则(末尾 /)
    • 证书全链、SAN、到期监控
    • HTTP→HTTPS、HSTS 启用节奏(先观察再强制)
    • 上线前:nginx -t、reload、回滚文件准备

    验收标准

    • 主备/多实例配置一致
    • 访问日志能区分新域名
    • 证书监控已接入
    • 回滚步骤可一键执行

    场景 B:反代后端 API / 微服务

    日常问题

    • 502/504
    • 上传失败 413
    • 后端拿到错 IP / 错协议
    • 登录态丢失、跨域异常

    必会知识点:

    proxy_http_version 1.1;

    proxy_set_header Host $host;

    proxy_set_header X-Real-IP $remote_addr;

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_set_header Connection "";

    proxy_connect_timeout 3s;

    proxy_send_timeout 60s;

    proxy_read_timeout 60s;

    client_max_body_size 50m;

    还要懂:

    • 上游 keepalive(upstream { keepalive N; })
    • buffering 开/关对大响应、TTFB 的影响
    • WebSocket:Upgrade / Connection
    • gRPC:grpc_pass、HTTP/2
    • real_ip 模块:从 SLB/CDN 取真实客户端 IP(可信网段)

    排障抓手

    • $upstream_addr $upstream_status $upstream_response_time $request_time
    • 区分:Nginx 慢 vs 上游慢 vs 客户端慢

    场景 C:负载均衡与摘流

    日常操作

    • 扩容加节点、发布摘流、机器故障打 down
    • 会话粘滞争议(要不要 ip_hash)

    必会知识点

    • upstream:weight / backup / down
    • max_fails + fail_timeout(被动健康检查局限)
    • 算法:轮询、least_conn、ip_hash
    • 主动健康检查能力边界(开源 vs Plus / 外部探活)
    • 发布期:先摘流再停服务,避免 502 尖刺
    • 与注册中心/K8s endpoint 变更的时序

    SRE 原则

    • 摘流要可脚本化,禁止只改一台忘了集群
    • 发布窗口看:5xx、上游耗时、饱和连接数

    场景 D:静态资源 / 前端发布

    日常操作

    • 发 dist、回滚静态版本
    • 缓存导致“发了但用户看不到”

    必会知识点

    • expires / Cache-Control / etag
    • HTML 短缓存或不缓存,带 hash 的 JS/CSS 长缓存
    • gzip/brotli、sendfile
    • 原子发布:新目录 + 切换 symlink,避免半发布
    • CDN 回源与源站缓存头一致性

    场景 E:HTTPS / 证书生命周期

    日常操作

    • 申请/续期/替换证书
    • 协议版本、弱加密治理
    • 双证书(RSA + ECDSA)偶发

    必会知识点

    • 证书链不完整导致部分客户端失败
    • ssl_certificate / ssl_certificate_key
    • TLS1.2/1.3、cipher 套件基线
    • OCSP Stapling
    • 到期告警(30/14/7 天)
    • 替换证书是否需要 reload、多机同步

    事故高发点

    • 只更了一台
    • 中间证丢了
    • HSTS 预加载后证书搞砸(恢复极痛)
    赞(0)
    未经允许不得转载:171主机测评 » Nginx的介绍和使用清单
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址