如何使用 nginx 提供特定的静态文件?

How to serve specific static files with nginx?

我有类似 /api/lang?lang=en 的查询,我想将其作为 /server/i18n-angular/en.json 与 nginx 一起使用。我该怎么做?

我的目录结构如下:

/public/
/server/i18n-angular/en.json

我有以下配置,但是nginx说此时使用索引指令是错误的。

server {
  root /public
  ...
  location /api/lang {
    if ($args ~* "\?lang=(.+)") {
      set $language ;
      index ../server/i18n-angular/$language.json;
    }
  }
} 

我应该使用什么指令而不是 index

"index"指定用于显示文件夹的索引文件,所以这不是您需要的。

您需要 "rewrite":

location /api/lang {
    alias /server/i18n-angular;
    if ($args ~* "\?lang=(.+)") {
      set $language ;
      rewrite ^/(.*)$ /$language.json;
    }
}
location /api/lang {
    alias /server/i18n-angular;
    rewrite ^ /$arg_lang.json;
}