You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Nginx提供带MD5哈希的index.html文件?

解决Nginx匹配带MD5哈希的index.html文件问题

嘿,这个需求我刚好处理过,其实借助Nginx的正则匹配能力,结合try_files或者rewrite规则就能轻松搞定。下面给你两种适配不同场景的配置方案,直接加到你的server块里就行:

方案一:用try_files快速匹配(推荐)

这种方法最简洁,适合大部分场景,尤其是你只需要根路径或其他路由指向带哈希的index文件时:

server {
    listen 80 default deferred;
    server_name myapp.com;
    access_log /var/log/nginx/access.log;
    root /home/test; # 记得补全你的完整根目录路径

    # 处理根路径访问,精准匹配带哈希的index文件
    location = / {
        # 这里的{7}对应你示例里的7位哈希,如果你用完整32位MD5,改成{32}
        try_files $uri /index-[0-9a-f]{7}.html =404;
    }

    # 如果你是单页应用,需要所有路由都 fallback 到这个index文件,就加这个规则
    location / {
        try_files $uri $uri/ /index-[0-9a-f]{7}.html =404;
    }
}

关键说明:

  • [0-9a-f]{7}是正则表达式,用来匹配7位十六进制的哈希字符(对应你示例里的13e5cb2),如果你的MD5哈希是完整32位,直接把{7}改成{32}就行。
  • try_files的逻辑是:先尝试访问当前请求的URI,如果找不到,就去匹配后面的带哈希的index文件,最后如果都找不到返回404。

方案二:用rewrite规则实现重定向

如果需要更灵活的路由控制,可以用rewrite规则:

server {
    listen 80 default deferred;
    server_name myapp.com;
    access_log /var/log/nginx/access.log;
    root /home/test;

    # 根路径直接重写到带哈希的index文件
    location = / {
        rewrite ^ /index-[0-9a-f]{7}.html break;
    }

    # 单页应用路由 fallback:先尝试静态文件,找不到就重写到index文件
    location / {
        try_files $uri $uri/ @rewrite_to_index;
    }

    # 命名location,专门处理路由重写
    location @rewrite_to_index {
        rewrite ^ /index-[0-9a-f]{7}.html break;
    }
}

额外注意事项:

  • 部署时建议清理旧的带哈希的index文件,避免目录里存在多个符合规则的文件(Nginx会按字母顺序匹配第一个,可能导致访问到旧版本)。
  • 修改完配置后,一定要用nginx -t检查语法是否正确,没问题再执行systemctl reload nginx(或对应系统的重启命令)让配置生效。

内容的提问来源于stack exchange,提问作者Craig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:19:55