nginx 静态文件服务
高效托管静态文件,配置缓存、压缩和目录浏览
语法
root path; / alias path; / try_files;
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
root |
设置根目录 | root /var/www/html; |
常用 |
alias |
路径别名(替换 location 匹配部分) | alias /data/files/; |
常用 |
try_files |
按顺序尝试文件 | try_files $uri $uri/ /index.html; |
常用 |
expires |
设置缓存过期时间 | expires 30d; |
常用 |
gzip |
启用 gzip 压缩 | gzip on; |
常用 |
autoindex |
启用目录浏览 | autoindex on; |
进阶 |
示例
SPA 应用(React/Vue)
server {
listen 80;
server_name app.example.com;
root /var/www/app/dist;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}try_files 实现前端路由回退
静态资源缓存 + 压缩
http {
gzip on;
gzip_types text/css application/javascript image/svg+xml;
gzip_min_length 1000;
server {
location ~* \.(css|js|jpg|png|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
}静态资源长期缓存 + gzip 压缩
文件下载服务
location /downloads/ {
alias /data/files/;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}启用目录浏览,显示文件列表
常见错误
403 Forbidden
Nginx 进程没有读取文件的权限,检查文件和目录权限(chmod/chown)
404 Not Found(SPA 刷新)
缺少 try_files $uri $uri/ /index.html; 配置
技巧
- SPA 应用必须配置 try_files 回退到 index.html
- root 和 alias 的区别:root 拼接 location 路径,alias 替换
- gzip 对文本类文件压缩率 60-80%