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

如何配置Nginx Location块实现带匹配规则的字体请求回退

如何配置Nginx Location块实现带匹配规则的字体请求回退

嘿,这个需求用Nginx的正则匹配和try_files就能完美搞定,我给你拆解清楚思路和最终配置:

首先,核心是要精准捕获请求URL里的字符范围部分(比如256-511.pbf),这样才能在原字体缺失时,无缝切换到Noto Sans的同范围文件。这里用正则location来做捕获比alias更灵活,直接上配置:

location ~ ^/fonts/[^/]+/(\d+-\d+\.pbf)$ {
    alias /data/fonts/ofm/;
    # 先尝试原请求的字体文件,找不到就用Noto Sans Regular的对应范围文件
    try_files $uri "Noto Sans Regular/$1" =404;
}

我给你解释下每部分的作用:

  • 正则表达式^/fonts/[^/]+/(\d+-\d+\.pbf)$专门匹配/fonts/[任意字体名]/[数字范围].pbf格式的请求,并且把后面的[数字范围].pbf捕获成变量$1,这是实现同范围匹配的关键。
  • alias /data/fonts/ofm/和你原来的配置保持一致,负责把/fonts/开头的请求映射到服务器本地的/data/fonts/ofm/目录。
  • try_files的逻辑很直白:先找用户请求的原字体文件($uri对应的实际路径是/data/fonts/ofm/[原字体名]/[范围].pbf),如果文件不存在,就自动切换到/data/fonts/ofm/Noto Sans Regular/$1(也就是同范围的Noto Sans字体文件),要是这个文件也找不到,就返回404。

注意事项

  • 如果你服务器上的Noto Sans目录名是URL编码后的Noto%20Sans%20Regular,记得把配置里的"Noto Sans Regular/$1"改成"Noto%20Sans%20Regular/$1",要和实际目录名完全一致。
  • 确保Nginx进程有读取/data/fonts/ofm/目录及所有子文件的权限,不然会出现权限错误。

备注:内容来源于stack exchange,提问作者hyperknot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 15:53:01