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 服务,不适合计算密集型任务。
相关页面
- Nginx 概念页 — 核心内容集中页
- Nginx Part4 — 其他常用模块基础(Day44)
- 防火墙与系统优化 — 内核参数调优
- HTTP 协议 — 同源策略 / 跨域背景