使用 NGINX 根据文件扩展名匹配位置
已出版: 2025年2月15日 UTC 01:18:38
最后更新 2026年1月12日 UTC 08:35:53
本文解释了如何在 NGINX 的位置上下文中基于文件扩展名进行模式匹配,这对于 URL 重写或根据文件类型以不同方式处理文件非常有用。
为了使尽可能多的人能够访问本页面,本页面由英文机译而成。遗憾的是,机器翻译技术尚不完善,因此可能会出现错误。如果您愿意,可以在此处查看原始英文版本:
Match Location Based on File Extension with NGINX
Match Location Based on File Extension with NGINX
本文中的信息基于运行在 Ubuntu Server 14.04 x64 上的 NGINX 1.4.6 版本。对于其他版本,这些信息可能有效,也可能无效。
我不太擅长正则表达式(我知道我应该在这方面多加练习),所以当需要进行比最简单的模式匹配更复杂的操作时,例如在 NGINX 的位置上下文中,我经常需要查阅相关资料。
如果您需要区别处理特定文件类型,那么根据请求文件的扩展名来匹配位置的功能就非常有用。而且这也很容易实现,您的位置指令可以简单地写成这样:
location ~* \.(js|css|html|txt)$
{
// do something here
}
{
// do something here
}
当然,您可以根据需要更改扩展名。
上面的例子不区分大小写(例如,它会匹配 .js 和 .JS)。如果要区分大小写,只需删除 ~ 后面的 * 即可。
如何处理比赛结果取决于你;通常情况下,你会将其重写到后端进行某种预处理,或者你可能只是想从公众看不到的其他文件夹中读取文件,可能性无穷无尽 ;-)
