无法通过 Nginx 提供 NextJS 静态资产

无法通过 Nginx 提供 NextJS 静态资产

我有一个在端口 3000 上运行的 NextJS 应用程序,并且有一个test.ico位于以下位置的文件:

/static/images/icons/

我希望这个文件从根目录而不是实际路径提供。我的意思是https://www.schandillia.com/static/images/icons/test.ico,我希望它可用作https://www.schandillia.com/test.ico。我可以轻松配置我的 Express 服务器来提供此文件,但我想让 Nginx 来处理。因此,我将以下配置添加到我的 Nginx conf 服务器块中:

location / {
    proxy_pass http://127.0.0.1:3000;
    charset UTF-8;
    proxy_http_version 1.1;
  }
  location /test.ico {
    proxy_pass http://127.0.0.1:3000/static/images/icons/test.ico;
    expires 365d;
    add_header Pragma public;
    add_header Cache-Control "public";
  }
  location ~* \.(?:ico|svg|woff|woff2|ttf|otf|css|js|gif|jpe?g|png)$ {
   proxy_pass http://127.0.0.1:3000;
   expires 365d;
   add_header Pragma public;
   add_header Cache-Control "public";
  }

然而,https://www.schandillia.com/test.ico现在抛出了 404。我做错了什么?

答案1

正则表达式 location优先于常规字首 location块。请参阅这个文件了解详情。

您可以使用以下任何一种方法来更改优先顺序:

location = /test.ico
location ^= /test.ico
location ~ ^/test.ico

相关内容