Skip to content

Nginx:安装前提、配置层级与请求入口 ​

Nginx 运维围绕请求入口展开:先确定实际二进制、主配置与监听地址,再理解 server、location 和上游的选择。配置检查、进程重载和业务请求验收是三个不同步骤。

按任务阅读 ​

当前任务阅读内容应掌握的结果
认识环境与基本操作本篇的环境前提、基本对象与操作说明管理的对象、执行身份和配置位置
理解机制并完成配置请求匹配、路径映射与代理语义;静态站点与反向代理配置解释关键机制,按配置完成任务并核对结果
维护、排障与恢复TLS、日志轮转与平滑发布;403、404、502 与 504 定位;重载后路由异常的恢复与复盘能保存证据、控制变更、恢复并验收

先认识 HTTP:客户端连接一个地址与端口,发送方法、目标路径和请求头;服务器返回状态码、响应头和正文。URL 中域名经 DNS 找到地址,但 HTTP 的 Host 仍用于区分同地址上的站点。HTTPS 在 HTTP 之前增加 TLS 握手,SNI 在握手时选择域名对应配置与证书;改 Host 不能代替正确 SNI。

本系列核对日期2026-10-17,按 Nginx Open Source 1.28/1.29 版本族的共同稳定指令组织,作为明确的教学兼容范围,不声称任一补丁是当前最新或可不经安全更新投入生产。官方在线手册包含更新族新增指令,不能看见一条就假定旧包支持。示例未执行,Nginx 配置仍需检查并验证实际请求。Linux 是部署说明平台;Windows 是单独的原生实现说明,macOS不纳入。

反向代理与静态服务器 ​

Nginx 反向代理接受客户端请求,再作为客户端连接已配置的上游;静态服务器则读取已发布文件返回内容。两者都可以在同一站点按路径分配,但不是“所有请求都先找文件再找后端”。配置中的 location 决定处理器:示例 /api/ 交给代理,其他公开路径走静态处理。上游只绑定127.0.0.1,外部用户通过入口访问;监听内网不能替代鉴权和网络隔离。

事件驱动 worker 可在等待网络时处理其他连接。一个请求的慢磁盘、同步模块或上游拥塞仍会耗资源;worker_connections 不是最大用户数,代理请求还占上游连接,文件描述符上限与keepalive也影响容量。此系列不凭演示配置承诺吞吐量。官方入门

配置层级与指令上下文 ​

Nginx 配置层级从 main 到 events、http、server、location。main设置进程与日志,events设置连接处理,http放HTTP共享配置,server定义虚拟站点,location决定URI处理。指令后分号表示结束,大括号形成块;注释以井号起始。include相当于把文件放入当前位置,必须符合该指令允许的上下文:log_format在http,不能塞进location;HTTP的proxy_pass与stream的proxy_pass属于不同模块,不能照搬。

示例主配置include conf/http-common.conf,再在server内include conf/site.conf。相对include路径按主配置所在目录(conf_prefix)解析,不是按当前被include文件所在目录,也不能笼统说按-p运行前缀解析。-p设置运行prefix,相对-c主配置路径先由该prefix补全;主配置确定后,它所在目录才成为相对include的基准。本例主配置就在/tmp/m5-nginx下,所以两种前缀恰好重合。绝对root/alias路径则按文件系统解析。系统包通常用/etc/nginx,但不是所有编译安装或Windows都如此。先确定实际主配置、两种prefix和运行用户,再解释“改了配置没有生效”。不要把仓库根站点配置当作本例配置。命令行参数、1.28配置解析源码

Linux与Windows的使用前提 ​

Nginx Linux 安装应由读者选择受维护发行版包或官方当前支持的软件源,并确认包签名、更新渠道和编译模块;本课不执行安装。旧CentOS7 YUM地址仅是历史安装记录,不是现行推荐。需要TLS时确认http_ssl模块及链接的OpenSSL能力,不凭nginx版本推断密码库一定支持TLS1.3。

Nginx Windows 原生版使用Win32 API;官方说明它仍为beta,连接处理及多worker能力与Unix不同,不能按Linux性能假设部署。配置文件路径用正斜线,如C:/nginx/html;普通相对运行路径关联prefix,相对include则以上述conf_prefix为基准。WSL里运行的Linux版也不能记作Windows原生验证。此例Linux的/tmp/m5-nginx绝对路径需要Windows读者显式改为自己的隔离目录。官方Windows说明、官方发行包

命令的影响与阅读顺序 ​

Nginx 命令 nginx -t 会解析配置并尝试打开引用文件;它不是纯文本解析器,需在目标环境核对权限与影响。nginx -T还会输出展开配置,可能泄露内网地址或路径,不应直接贴到公开工单。nginx -V显示编译参数;nginx -s reload发送重载信号;nginx -s quit优雅退出,stop快速停止,reopen重新打开日志。这些是读者以后自跑的操作说明。

读者应先确认配置前缀和权限,再检查配置,启动专用实例,观察预期请求;线上变更需走自己的发布流程。reload不是重新安装,也不自动让已返回的旧内容失效。先读匹配机制,再阅读完整示例,最后运维与排错。

入门练习与参考解答 ​

练习:浏览器访问127.0.0.1,DNS与Host分别是什么?两个server都监听8088,能不能只靠端口选中lab.local?

参考解答:IP字面地址无需域名解析,此时Host通常是127.0.0.1:8088;它不等于lab.local。地址端口先选候选集合,Host再选站点,未命中落入该监听的default_server。完整示例要求读者显式发送Host;HTTPS则同时处理SNI与信任链。

继续阅读