MapFlow

PUBLIC LEARNING ROADMAP

精通Nginx 学习技能树

由 Skill Tree Engine 确定性生成的只读快照

25 个知识节点 · intermediate

发布者:hellozyb

知识目录

基础概念

HTTP协议基础

理解HTTP请求/响应结构、方法、状态码、头部字段等Web通信基础,作为掌握反向代理与URL转发的语言底座

建议预留 60 分钟

学习目标

  • 掌握HTTP请求行、请求头、请求体结构与常见方法
  • 理解状态码族语义与常见头部字段传递

关键概念

  • 请求报文结构
  • HTTP方法
  • 状态码
  • 请求头/响应头
  • Cookie/Session

为什么学习

  • 小白需真正理解HTTP请求/响应报文结构与头语义,才能在配置proxy_set_header与调试时有据可依

如何检验理解

  • 能徒手画出一次完整HTTP请求与响应报文结构并说明各头部用途
  • 能解释GET/POST状态码族含义并能推断反向代理中头部丢失的后果

基础概念

Linux基础与网络概念

命令行操作、进程管理、端口/IP概念、TCP/IP与DNS,为部署、配置与排障Nginx打底

建议预留 45 分钟

学习目标

  • 掌握Linux文件系统与权限管理基本命令
  • 理解端口、IP、TCP连接建立与DNS解析概念

关键概念

  • 命令行
  • 文件权限
  • 端口/IP
  • TCP三次握手
  • DNS解析
  • socket

为什么学习

  • Nginx运行在Linux上,小白必须熟练命令行、文件权限与端口tcp连接才能完成安装、配置与诊断

如何检验理解

  • 能在Linux上完成文件编辑、权限修改与进程查看等基本操作
  • 能用netstat/ss查看监听端口并用tcpdump抓包验证流量方向

基础概念

nginx安装与编译

不同平台安装、源码编译、常用编译模块、版本选择,为后续按需装配模块打基础

建议预留 45 分钟

学习目标

  • 掌握yum/apt安装与nginx -V查版本方式
  • 理解源码编译关键configure参数含义并能选择模块

关键概念

  • 源码编译
  • configure参数
  • 动态模块
  • 版本管理
  • --with/--without

为什么学习

  • 小白需掌握安装与常见编译参数,才能获得后续所需的gzip/http2/stream等模块能力

如何检验理解

  • 能通过编译参数选择所需模块完成一次nginx --configure并启动服务
  • 能用nginx -V查看已编译参数并判断内置启用的模块

核心技能

配置文件结构与指令语法

nginx.conf主配置结构、指令上下文(main/http/server/location)、include机制,是全部配置能力的骨架

建议预留 60 分钟

学习目标

  • 理解four级上下文的包含关系与指令可放置范围
  • 掌握include组织配置文件的最佳实践

关键概念

  • main/http/server/location
  • 指令上下文
  • include
  • 作用域与继承
  • nginx.conf

为什么学习

  • 小白必须理解指令上下文作用域与继承规则,否则后续所有配置都会因放错层级而失效,是精通的核心地基

如何检验理解

  • 能说出某条指令应位于哪个上下文并解释作用域继承关系
  • 能规划出模块化的include配置文件结构

核心技能

Server虚拟主机配置

基于域名/端口/IP的虚拟主机区分与listen/server_name匹配原理,是多站点与网关入口的基石

建议预留 45 分钟

学习目标

  • 掌握listen与server_name匹配优先级
  • 能创建并组织多个虚拟主机配置文件

关键概念

  • listen
  • server_name
  • 虚拟主机
  • default_server
  • 通配符/正则域名

为什么学习

  • 反向代理与API网关都建立在server块正确区分流量之上,虚拟主机是核心场景的高频操作

如何检验理解

  • 能配置多个域名vhost并解释server_name匹配回退规则
  • 能通过curl指定Host头验证命中正确的server块

核心技能

nginx基本命令与运维操作

start/stop/reload/test/reopen信号管理及优雅平滑升级,是生产运维的日常基本功

建议预留 30 分钟

学习目标

  • 掌握主要信号命令含义与使用场景
  • 掌握优雅升级与配置校验流程

关键概念

  • SIGNAL
  • reload
  • graceful upgrade
  • nginx -t
  • reopen

为什么学习

  • 配完配置要以reload生效,排障要用test校验,这是精通Nginx的必备可执行技能

如何检验理解

  • 能区分reload与restart并说明为何reload更平滑、不丢请求
  • 能通过nginx -t定位语法错误行并完成热升级

核心技能

Location匹配规则与优先级

精确/前缀/正则location匹配、优先级排序与内部跳转,是URL路由与代理分发的决策核心

建议预留 60 分钟

学习目标

  • 掌握精确/前缀/正则三类location及其优先级顺序
  • 理解location内部跳转与proxy正则捕获传参规则

关键概念

  • =精确匹配
  • ^~前缀
  • ~正则
  • 匹配优先级
  • @命名location

为什么学习

  • location是url routing的精度核心,反向代理、重写、静态全经它以精确匹配流量,必须深度掌握规则与优先级且能熟练design路由

如何检验理解

  • 能针对复杂URL说明命中哪个location及为何
  • 能设计出一份不含冲突的location路由表并解释匹配最优解

核心技能

Master-Worker事件驱动架构

理解nginx多进程模型、异步事件机制与worker_processes,是高并发调优的架构前提

建议预留 60 分钟

学习目标

  • 理解多进程模型与异步非阻塞IO事件机制
  • 理解worker_processes/worker_connections的含义

关键概念

  • master/worker
  • epoll
  • 异步非阻塞
  • worker_processes
  • accept_mutex

为什么学习

  • 理解事件驱动与master-worker模型才能真正懂worker连接数与epoll等参数,是性能专家能力的认知基础

如何检验理解

  • 能解释为何一个worker可并发处理大量请求且不阻塞
  • 能说明master与worker职责分工及reload机制原理

基础概念

静态资源服务与根目录配置

root/alias/index、静态文件serving、目录列表与try_files,是静态资源服务专家分支的基础

建议预留 45 分钟

学习目标

  • 区分root与alias的路径拼接差异
  • 掌握index与try_files基本用法

关键概念

  • root/alias
  • index
  • try_files
  • autoindex
  • sendfile

为什么学习

  • 静态serving是核心能力但与原目标关联中等,做为基础配置技能掌握root与try_files即可

如何检验理解

  • 能配置一个多静态站点server并让root与alias正确路由
  • 能用try_files实现SPA回退或资源兜底

核心技能

HTTPS/SSL证书配置

TLS证书配置、HTTP/2、SSL参数优化与HSTS,是安全传输与性能专家分支的关键

建议预留 90 分钟

学习目标

  • 掌握证书链配置与HTTP/2开启
  • 理解ssl_protocols/加密套件基本安全取舍

关键概念

  • TLS/SSL证书
  • HTTP/2
  • ssl_certificate
  • HSTS
  • TLS会话复用
  • ssl_session_cache

为什么学习

  • 目标将TLS/SSL定位熟练级,需掌握证书配置与HTTP/2开启及常见优化,但不必钻研密码学细节

如何检验理解

  • 能配置双证书TLS server并启用HTTP/2与HSTS
  • 能排查常见TLS握手报错并调整ssl_protocols/套件

核心技能

反向代理proxy_pass配置

http代理、proxy_pass路径转发、proxy_set_header、keepalive后端连接,是Nginx第一核心价值

建议预留 90 分钟

学习目标

  • 掌握proxy_pass路径拼接规则
  • 掌握proxy_request/http头部传递与后端keepalive配置
  • 理解代理超时与buffering机制

关键概念

  • proxy_pass
  • URI透传
  • proxy_set_header
  • proxy_buffering
  • proxy_read_timeout
  • keepalive

为什么学习

  • 反向代理是精通Nginx最核心能力之一,目标定位专家级,必须掌握path转发差异、头传递与后端连接复用等精细细节

如何检验理解

  • 能解释proxy_pass带/与不带/时URI透传差异并正确设计
  • 能为后端正确传递X-Forwarded-For与真实host并启用keepalive复用

补充知识

日志管理与access/error日志

日志格式定制、级别、切割轮转,支撑日志分析与可观测性

建议预留 30 分钟

学习目标

  • 掌握log_format定制并配合JSON输出
  • 掌握日志切割与重开方案

关键概念

  • log_format
  • access_log
  • error_log级别
  • 日志轮转
  • JSON日志

为什么学习

  • 日志是排障与监控入口,但非核心业务逻辑,做为基础能力掌握格式定制与轮转即可,不深入分析pipeline

如何检验理解

  • 能自定义JSON格式access日志并配置按天轮转
  • 能根据error日志级别排查常见配置问题

核心技能

Rewrite重写规则与正则

rewrite指令、正则应用、redirect/permanent标志与if条件,服务于URL路由治理

建议预留 90 分钟

学习目标

  • 掌握rewrite语法与last/break/redirect/permanent标志
  • 掌握正则捕获在URI重写中的应用

关键概念

  • rewrite
  • 正则捕获
  • redirect
  • return
  • if条件
  • rewrite module

为什么学习

  • 重写在七层URL治理与动态路由中常用,但目标核心在代理分流,掌握rewrite/redirect与正则捕获即可,无需扩展自定义if复杂逻辑

如何检验理解

  • 能编写常见http-to-https与路径改写rewrite规则并验证跳转
  • 能解释return与rewrite在URL处理阶段的差异

核心技能

访问控制与基础安全加固

allow/deny IP控制、auth_basic认证、防盗链与隐藏敏感配置,是安全防护的入门砖

建议预留 60 分钟

学习目标

  • 掌握allow/deny与auth_basic应用场景
  • 掌握referer防盗链与安全响应头加固

关键概念

  • allow/deny
  • auth_basic
  • valid_referers
  • 安全响应头
  • 限制方法

为什么学习

  • 安全防护被目标定位专家级,访问控制与鉴权是其起点,需扎实掌握location层allow/deny/auth基本加固

如何检验理解

  • 能实现基于IP白名单与auth_basic的location级访问控制
  • 能加固server headers并隐藏敏感模块信息

补充知识

Gzip压缩与HTTP优化

gzip压缩、MIME识别、缓存头与server_tokens,支撑静态资源与传输优化

建议预留 45 分钟

学习目标

  • 掌握gzip与gzip_types配置
  • 理解expires与缓存控制头设置

关键概念

  • gzip
  • gzip_static
  • Cache-Control
  • expires
  • server_tokens

为什么学习

  • 是性能优化的重要一环但非核心,掌握gzip与缓存头基本配置即可,不深入压缩比调优细节

如何检验理解

  • 能配置gzip并确认Content-Encoding: gzip生效
  • 能设置合理Cache-Control与隐藏版本号

核心技能

Nginx变量体系与内置变量

$host/$remote_addr等变量理解、map模块与自定义变量传递,是动态配置的强大工具

建议预留 60 分钟

学习目标

  • 掌握核心内置变量语义与生命周期
  • 掌握map模块进行变量映射与默认值设计

关键概念

  • 内置变量
  • $host/$uri
  • map模块
  • 变量作用域
  • $request_uri

为什么学习

  • 变量与map是构建OpenResty动态逻辑和复杂路由的枢纽能力,目标含Lua扩展需达到能把变量体系迁移到自定义脚本设计与模块中的level

如何检验理解

  • 能用map根据请求特性动态构建变量并驱动代理目标
  • 能解释常见内置变量真实含义及在access/log中的值
  • 能把变量体系思路迁移到lua中编写动态路由逻辑

核心技能

Nginx性能调优实践

worker连接数、事件模型、内核参数、缓冲区与IO优化,支撑高并发生产

建议预留 90 分钟

学习目标

  • 掌握worker/连接数/事件模型的调优方法论
  • 掌握内核参数(somaxconn/file-max/epoll)与缓冲IO优化
  • 掌握压测与瓶颈定位的方法论

关键概念

  • worker_connections
  • epoll
  • keepalive
  • somaxconn
  • sendfile
  • ngx_http_core
  • 压测基准

为什么学习

  • 性能与并发调优被目标定位专家级核心能力,深入理解worker/epoll/keepalive/内核参数才能给出生产级与高并发优化方案

如何检验理解

  • 能根据并发模型推导合适的worker_processes与worker_connections并说明依据
  • 能用ab/wrk压测对比调优前后提升并解释内核参数改进
  • 能定位并讲解系统瓶颈点进而给优化方案

核心技能

负载均衡与upstream

upstream后端池、轮询/权重/IP_hash/least_conn调度、健康检查与故障转移,是流量治理核心

建议预留 90 分钟

学习目标

  • 掌握round-robin/least_conn/ip_hash等算法差异
  • 掌握健康检查与故障转移配置及会话保持策略

关键概念

  • upstream
  • weight
  • ip_hash/hash
  • least_conn
  • max_fails
  • 健康检查
  • session affinity

为什么学习

  • 负载均衡被目标定位专家级,必须深入理解全部调度算法取舍、会话保持与健康检查才能胜任生产流量治理

如何检验理解

  • 能手写一个带权重+健康检查+被动故障转移的upstream并说明各参数含义
  • 能针对会话保持场景选择ip_hash/一致性hash并解释sticky机制

核心技能

缓存机制与proxy_cache

proxy_cache反向代理与fastcgi缓存、缓存键与失效策略,是缓存专家分支的核心

建议预留 90 分钟

学习目标

  • 掌握proxy_cache_path与proxy_cache_key配置
  • 理解缓存命中/失效判断与缓存清理机制

关键概念

  • proxy_cache
  • cache zone
  • cache key
  • proxy_cache_valid
  • purge
  • Mozilla缓存

为什么学习

  • 目标定位缓存为熟练级核心配置,需掌握proxy_cache配置与缓存键/失效设计以支撑生产边缘缓存

如何检验理解

  • 能搭建带命中率监控的proxy_cache并说明缓存键冲突处理
  • 能设计不同URI的缓存有效期策略

核心技能

流量限制与连接数控制

limit_req限速、limit_conn限制、burst缓冲与漏桶算法,是防DDoS的关键手段

建议预留 60 分钟

学习目标

  • 理解limit_req漏桶模型并配置限速
  • 掌握limit_conn与zone申请方式

关键概念

  • limit_req
  • 漏桶算法
  • burst
  • nodelay
  • limit_conn
  • zone

为什么学习

  • 防DDoS与限流被目标定位专家级,需深入理解漏桶/令牌桶模型与burst/nodelay语义以精确设计防护

如何检验理解

  • 能配置limit_req并解释漏桶工作原理与burst效果
  • 能用limit_conn限制单IP并发并验证超限返回503

核心技能

日志状态与realip模块

X-Forwarded-For传递、realip处理代理IP、stub_status监控连接统计

建议预留 45 分钟

学习目标

  • 掌握realip模块还原真实客户端IP
  • 掌握stub_status状态监控指标解读

关键概念

  • realip
  • X-Forwarded-For
  • set_real_ip_from
  • stub_status
  • Active connections

为什么学习

  • 真实IP还原与状态统计是监控与排障专家必需,需掌握realip与stub_status配合反向代理与访问控制

如何检验理解

  • 能在多层代理后正确还原客户端真实IP并用于日志
  • 能启stub_status读取活跃连接/读写计数指标

补充知识

WebSocket与四层代理

Upgrade/Connection转发与stream模块处理TCP/UDP四层代理

建议预留 45 分钟

学习目标

  • 掌握WebSocket长连接代理如何保留Upgrade头
  • 掌握stream模块四层流量转发基础配置

关键概念

  • WebSocket
  • Upgrade
  • stream模块
  • TCP/UDP代理
  • preread

为什么学习

  • WebSocket与stream代理是边缘需求,目标核心在七层HTTP场景,做基础Use了解协议升级与常见四层代理即可

如何检验理解

  • 能配置WebSocket反向代理转发Upgrade头
  • 能配置stream块做TCP端口转发

领域知识

Nginx高可用架构

keepalived+VIP、主备切换与VIP漂移,搭建高可用负载均衡集群

建议预留 120 分钟

学习目标

  • 掌握keepalived+VRRP与VIP机制
  • 掌握故障自动切换与健康检查脚本方案

关键概念

  • keepalived
  • VRRP
  • Virtual IP
  • 主备切换
  • 脑裂
  • 故障检测

为什么学习

  • 高可用被目标定位熟练级,需掌握keepalived+VIP主备切换架构、健康脚本与故障漂移的落地能力

如何检验理解

  • 能搭建双节点keepalived+nginx高可用并演示VIP自动漂移
  • 能编写健康检查脚本并解释脑裂风险与规避

核心技能

OpenResty与Lua扩展开发

Lua脚本集成与location嵌入,开发WAF、灰度发布、动态鉴权等复杂业务逻辑

建议预留 120 分钟

学习目标

  • 掌握OpenResty与lua-nginx-module的location阶段嵌入
  • 掌握基于Lua实现鉴权/限流/灰度/动态路由

关键概念

  • OpenResty
  • lua-nginx-module
  • content_by_lua
  • access阶段
  • resty.http
  • 灰度路由

为什么学习

  • Lua开发被目标定位熟练级,需能实际基于OpenResty编写动态路由、鉴权限流与灰度逻辑,这是agent用其构建API网关的重要能力

如何检验理解

  • 能编写一个location内嵌Lua实现鉴权或动态回源选择
  • 能把nginx变量转成Lua逻辑实现灰度发布或自定义限流
  • 能组合resty.http或逻辑实现API网关的基础功能

补充知识

Nginx模块C开发

模块结构、回调hook机制与C语言自定义模块开发与load_module加载

建议预留 120 分钟

学习目标

  • 理解模块结构、context与phase回调机制
  • 理解handler/types相关模块存在价值

关键概念

  • 模块context
  • phase
  • handler模块
  • load_module
  • 回调钩子

为什么学习

  • 目标将C模块开发定位入门级,只需理解模块结构、phase回调概念并能识别如何编写简单模块即可,不需深入实现复杂模块

如何检验理解

  • 能画出Nginx请求处理phase链并指出modulehook挂载点
  • 能阅读源码梳理一个handler模块的基本骨架结构

前置关系与知识联系

结合互动地图查看具体关系类型,再选择下一步。