如何从单一根目录为多个位置提供服务?

如何从单一根目录为多个位置提供服务?

我让 nginx 提供从 uri 路径映射到文件夹路径的静态文件,例如:

www.tempuri.org/js <=> /var/www/plublic/js
www.tempuri.org/css <=> /var/www/plublic/css
www.tempuri.org/img <=> /var/www/plublic/img
www.tempuri.org/foobar <=> /var/www/plublic/foobar

在我的 nginx 配置中,这些规则基本上都有相同的根:

location /js/ {
   root /var/www/public/;
}
location /css/ {
   root /var/www/public/;
}
location /foobar/ {
   root /var/www/public/;
}
location /img/ {
   root /var/www/public/;
}

我如何为所有 4 条路径编写一条规则?

location /(css|js|img|foobar)/ {
   root /var/www/public
}

答案1

root应该放在server块中,而不是location块中。这是最常见的 nginx 配置错误

进行此更改还将解决您的问题并消除需要对于该location块。

答案2

您基本上已经拥有它了。

location ~ ^/(css|js|img|foobar)/ {
    root /var/www/public/;
}

相关内容