← 首页

nginx 静态托管:那些容易被忽略的坑

2026-04-02

nginx 托管静态文件看似一行 root 就完事,真上线总会踩几个小坑。

坑一:目录列表泄露

默认没配好的情况下,访问一个没有 index.html 的目录,nginx 会把整个目录列出来。文章草稿、隐藏文件都可能暴露。

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

autoindex off 一关,访问不存在的路径直接 404,干净。

坑二:缓存与更新

纯静态站更新靠覆盖文件。如果浏览器缓存了旧的 index.html,用户看到的就是旧列表。开发期可以加:

location ~* \.(html)$ {
    add_header Cache-Control "no-cache";
}

生产环境则相反,给 CSS/图片长缓存、HTML 短缓存,是更稳的组合。

坑三:中文路径

尽量别让文章 slug 含中文或空格。URL 编码后可读性差,也容易在不同服务器之间出问题。用纯英文文件名当 slug 最省心。

nginx 配置不是写完就扔那儿的。每次改完 nginx -t 测一下语法,比上线后 500 再排查快得多。