nginx - 使用 gzip 压缩为 .css 文件启用缓存

nginx - enabling cache for .css file with gzip compression

我有以下 nginx 配置。如果我删除 css 的缓存配置,一切正常,所有 css 文件都通过反向代理完美加载。但是当我为 .css 放入缓存配置时,我的所有 css 资源都会得到 404:

location ~* \.css {
          add_header Cache-Control public;
          add_header Pragma public;
          add_header Vary Accept-Encoding;
          expires 1M;
        } 

location / {
            proxy_pass http://localhost:8080;
             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
             proxy_set_header X-Forwarded-Proto $scheme;
             proxy_set_header X-Forwarded-Port $server_port;
        }

Nginx 选择单个 location 来处理一个请求。 location 需要完成。参见 how Nginx processes a request

您的 location ~* \.css 块缺少 proxy_pass 语句。

proxy_set_header 语句可以移动到外部块并由两个 location 块继承。

例如:

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;

location / {
    proxy_pass http://localhost:8080;
}

location ~* \.css {
    add_header Cache-Control public;
    add_header Pragma public;
    add_header Vary Accept-Encoding;
    expires 1M;

    proxy_pass http://localhost:8080;
}