Nginx 配置生成指南
一份错配的 Nginx 能让整个站点 502,或把内网端口暴露出去。本指南用纯方法论,把常见运维需求落成安全、可读的配置,并标注必查项。不绑定具体发行版。
适用场景
- 给后端服务套一层反向代理。
- 统一接入 HTTPS 与证书续期。
- 为静态资源加缓存与压缩。
核心纪律
- 先画流量图:请求从哪来、到哪去、过几层,先画清楚。
- 最小暴露:只开放必要端口,内网端口不外泄。
- 配置分文件:按站点拆 conf,主配置只做 include。
- 改前先测:每次改动跑语法检查再 reload。
步骤(标准流程)
- 定监听:明确域名、端口(80/443)与协议。
- 写 server 块:每个域名一个 server,避免混用。
- 配证书:443 启 HTTPS,指定证书与私钥路径。
- 做跳转:80 统一 301 到 443。
- 设代理:location 指定上游地址与头信息(含真实客户端信息)。
- 加缓存:对静态资源设过期时间与缓存层级。
- 开压缩:启用 gzip/brotli,省带宽。
- 限流防护:对登录等接口设连接与速率限制。
- 记日志:访问与错误日志分开,便于排查。
- 语法检查:生成后先做配置校验。
- 灰度 reload:先 reload 单台,观察无误再全量。
- 复核:用外部探测确认返回与证书状态正常。
示例
示例 1|反向代理
server 监听 443,location / 代理到本地应用端口,透传客户端地址头。
示例 2|静态站点
root 指向目录,开启长缓存与压缩,错误页自定义。
示例 3|多域名
两个 server 块按域名分流,各自证书独立。
边界(踩过的坑)
- 把内网端口直接监听公网,暴露管理后台。
- 证书路径写错,reload 直接失败。
- 没做 80→443 跳转,用户访问 http 报空。
- 代理头不全,后端拿到错误客户端地址。
- 缓存时间太长,发版后用户看到旧资源。
- 压缩与已有前端压缩冲突,页面乱码。
- 改完不校验直接重启,整站 502。
- 限流过严,正常高峰被误杀。
自检清单
- [ ] 是否先画了流量图?
- [ ] 内网端口是否未外泄?
- [ ] 证书与私钥路径是否正确?
- [ ] 是否做了 http→https 跳转?
- [ ] 代理头是否完整?
- [ ] 是否做了语法校验?
- [ ] 是否先灰度再全量?