Nginx 基本使用:命令、配置结构与反向代理

云原生与交付268 阅读约 4 分钟

Nginx 是用得最广的 Web 服务器与反向代理。日常其实就围绕「几条命令 + 几段配置」打转,这篇把它们整理清楚。

常用命令

nginx                 # 启动
nginx -s reload       # 平滑重载配置(不中断现有连接,改完配置就用它)
nginx -s stop         # 快速停止
nginx -s quit         # 优雅停止(处理完现有请求再退)
nginx -t              # 校验配置语法(reload 前务必先测)
nginx -V              # 查看版本与编译参数

铁律:改完配置先 nginx -t,通过再 nginx -s reloadreload 是平滑的——旧连接照常处理完,新连接用新配置,服务不中断。

配置结构

主配置 nginx.conf 的层级是 main → events → http → server → location

http {
  server {
    listen 80;
    server_name example.com;

    location / {
      root /usr/share/nginx/html;   # 静态站点根目录
      index index.html;
      try_files $uri $uri/ /index.html;   # SPA 兜底到 index.html
    }
  }
}

实践上建议把每个站点拆成单独文件放进 conf.d/sites-available/,主配置只 include,便于管理。

反向代理

把请求转发给后端服务(如 Node 应用):

location /api/ {
  proxy_pass http://127.0.0.1:3000/;
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
}

那几个 proxy_set_header 很重要:不带的话后端拿到的客户端 IP、协议都会失真(看到的全是 Nginx 自己)。

常见排查

  • 502 Bad Gateway:后端没起或地址写错,先确认 proxy_pass 的目标活着。
  • 404 但文件存在:多半是 root / try_files 路径不对,或权限不足。
  • 改配置不生效:忘了 reload,或改错了文件(被另一个 server 块的 server_name 抢先匹配)。
  • 静态资源 403:Nginx 运行用户对 root 目录无读权限。

小结

Nginx 日常 = -t 校验 + -s reload 平滑重载 + 一段 server/location 配置。静态站点配 root + try_files,反向代理配 proxy_pass + 转发头。记住「改配置先测后重载」,能避开绝大多数翻车。

相关文章

评论 (6)

K

kkk

registry-mirror 配完拉镜像快太多了

路过的猫

compose 一上手就回不去了

不器

请问多个 server_name 复用同一张证书会有坑吗?

G

Gavin

谢谢支持~有问题欢迎评论区继续聊

H

Havoc

acme.sh 自动续期真香,再也不用半夜被证书过期叫醒

蝈蝈

看完顺手点个赞