当请求是非摘要时,Nginx 如何提供摘要图标文件 favicon.ico

Nginx how to serve digest favicon file when request is for non-digest favicon.ico

我在 rails 应用程序前使用 Nginx。 Nginx 正在使用以下位置规则从 public 提供静态资产:

location ~ ^/assets/ {
            gzip_static     on;
            gzip            off;
            expires         1y;
            add_header      Cache-Control public;
            add_header      Last-Modified "";
            add_header      ETag "";
            break;
        }

这对于标准 Rails 摘要资产来说工作正常,但我时不时地直接收到 /favicon.ico 的请求,这将失败,因为它是非摘要资产。

我想做的是使用 Nginx 位置指令 map/alias/rewrite /favicon.ico/assets/favicons/favicon-somereallylongdigest.ico.

由于 rails 将保留最后 3 个资产,因此可能有三个匹配的文件,我对此并不担心,并且很乐意匹配找到的任何文件。

我对 Nginx 配置不是很了解,所以不胜感激。

您可以使用永久重定向:

location = /favicon.ico {
    return 301 $scheme://$host/assets/favicons/favicon-somereallylongdigest.ico;
}