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 目标也带路径时会替换匹配的前缀;不带斜杠则将完整原始路径拼接转发,具体规则容易踩坑,建议按需实测确认。
相关教程
官方资料来源