Nginx 详解 Part5 — 其他模块/架构优化/系统与Nginx优化/防盗链/跨域/CPU亲和

主题:Nginx 其他常用模块、架构优化三步法、系统与 Nginx 优化参数、静态资源优化(expires/gzip)、防盗链、允许跨域、CPU 亲和


结构总览

Nginx 其他模块
  ├─ 目录索引(autoindex)
  ├─ 访问控制(allow/deny)
  ├─ 访问认证(auth_basic)
  ├─ 状态监控(stub_status)
  ├─ 连接限制(limit_conn)
  └─ 请求限制(limit_req)
架构优化三步法
  ├─ 第一步:摸清情况(画链路图 + 了解业务)
  ├─ 第二步:发现瓶颈(计算类 QPS + 观察类 top/netstat/慢查询)
  └─ 第三步:针对性优化(少读/就近读/读缓存,少写/漏斗写/buffer写)
系统优化 vs Nginx 优化
  ├─ 系统:文件描述符/半连接队列/全连接队列/TIME_WAIT/端口范围
  └─ Nginx:worker_processes/worker_connections/sendfile/gzip/keepalive
静态资源优化
  ├─ 浏览器缓存(expires 30d/24h/1M/1y)
  └─ Gzip 压缩(gzip_comp_level/gzip_min_length/gzip_types)
防盗链(valid_referers + $invalid_referer)
允许跨域(Access-Control-Allow-* 响应头 + OPTIONS 预检)
CPU 亲和(worker_cpu_affinity)

关键要点

架构优化三步法: ① 摸清情况(画架构图/链路图 + 了解业务特点:电商峰值流量大、ToB 逻辑复杂 bug 率高)② 发现瓶颈(计算类:峰值 QPS/单机极限 QPS = 机器数;观察类:慢查询日志、top、netstat、stub_status)③ 针对性优化(高频读→少读/就近读/读缓存;高频写→少写/漏斗写/buffer 写;动静分离/冷热分离)。

分层优化: 数据库层(SQL/索引/Redis)、Web 应用层(扩容/调权重)、负载均衡层(多级 LB/F5)、文件服务器层(Ceph 分布式)、网络层(CDN/带宽)。

系统优化核心参数: ulimit -n 65535、net.ipv4.tcp_max_syn_backlog = 8192、net.core.somaxconn = 4096、net.ipv4.tcp_tw_reuse = 1、net.ipv4.ip_local_port_range = 1024 65000。

Nginx 优化核心参数: worker_processes auto、worker_connections 10240、worker_rlimit_nofile 65535、use epoll、sendfile on、keepalive_timeout 65、gzip on、client_max_body_size 20m。

防盗链: 通过 valid_referers none blocked server_names *.example.com 定义合法来源,$invalid_referer 变量判断(合法 0 / 非法 1),非法时 return 403 或返回防盗链提示图。

允许跨域: 前后端分离架构下浏览器同源策略(协议/域名/端口任一不同即跨域)。Nginx 添加 Access-Control-Allow-Origin/Methods/Headers/Credentials 响应头,并处理 OPTIONS 预检请求(return 204)。生产环境建议将 * 替换为具体域名。

CPU 亲和: worker_cpu_affinity auto(1.9.10+)或手动 0001 0010 0100 1000 绑定 worker 到固定 CPU 核心。好处:减少进程切换、提高缓存命中率、降低内存访问延迟。坏处:计算密集型任务会导致某 CPU 持续被占用。适合高并发 Web 服务,不适合计算密集型任务。


相关页面