Nginx 常用指令手册

更新于 2026年7月25日

适用人群:自建服务器、需要配置或排查 Nginx 站点配置的站长与运维

核心概念

常用指令速查表

指令 作用 示例
server 定义一个虚拟主机(站点)配置块 server { ... }
listen 指定监听端口和协议(IPv4/IPv6、SSL) listen 443 ssl;
server_name 匹配请求的域名 server_name example.com www.example.com;
root 设置站点静态文件根目录 root /var/www/example.com;
index 指定默认首页文件 index index.html index.php;
location 按 URL 路径匹配并定义处理规则 location /api/ { ... }
proxy_pass 反向代理,将请求转发到后端服务 proxy_pass http://127.0.0.1:3000;
proxy_set_header 转发时设置/透传请求头 proxy_set_header Host $host;
ssl_certificate 指定 SSL 证书文件路径 ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key 指定 SSL 私钥文件路径 ssl_certificate_key /etc/nginx/ssl/key.pem;
return 直接返回状态码或跳转,不再往下匹配 return 301 https://$host$request_uri;
rewrite 按正则改写请求 URI rewrite ^/old$ /new permanent;
try_files 依次尝试文件,找不到则走最后一个规则 try_files $uri $uri/ /index.html;
error_page 自定义错误页面 error_page 404 /404.html;
gzip 开启响应压缩 gzip on;
client_max_body_size 限制请求体大小(如上传文件) client_max_body_size 20m;

location 匹配优先级

从高到低:精确匹配(= /path)> 前缀最长匹配且带 ^~ 优先跳过正则 > 正则匹配(~ 区分大小写、~* 不区分)> 普通前缀匹配。写配置时应注意顺序不代表优先级,Nginx 会按规则自动选择最优匹配。

HTTP 强制跳转 HTTPS 常见写法

在 80 端口的 server 块中用 return 301 https://$host$request_uri; 是官方推荐方式,比 rewrite 效率更高、逻辑更清晰。

实际示例

server {
    listen 80;
    server_name example.com www.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com www.example.com;

    ssl_certificate     /etc/nginx/ssl/example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/example.com.key;

    root /var/www/example.com;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }

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

对应工具

常见问题

修改 Nginx 配置后如何生效?
先执行 `nginx -t` 检查语法是否正确,无误后执行 `nginx -s reload` 或 `systemctl reload nginx` 平滑重载,无需中断已有连接。
server_name 可以配置多个域名吗?
可以,用空格分隔多个域名或通配符,例如 `server_name example.com *.example.com;`,Nginx 会按请求 Host 头匹配对应 server 块。
proxy_pass 末尾加不加斜杠有区别吗?
有区别:location 路径末尾有斜杠且 proxy_pass 目标也带路径时会替换匹配的前缀;不带斜杠则将完整原始路径拼接转发,具体规则容易踩坑,建议按需实测确认。

相关教程

官方资料来源