代理时,Nginx使用带有gzip压缩内容的etags

时间:2015-04-15 23:45:08

标签: caching nginx proxy cache-control

我想使用nginx作为客户端和我的一组应用程序之间的代理,我遇到的问题是:

  • 我有一个应用程序(在不同于nginx的机器上)有静态内容(图像,css等)。
  • 静态内容是gzip压缩
  • 我按如下方式配置了nginx:

    location ^~ /static/  {
        etag on;
        expires 1d;
        more_set_headers "Vary: Accept-Encoding";
    
        location ~* \.(css|js)$ {
            gzip_static on;
            expires -1;
            proxy_pass   http://my_upstream;
        }
        proxy_pass   http://my_upstream;
    }
    

我期待etags能为js和css这样的东西工作,但事实并非如此。我想它是因为js和css文件与nginx不在同一台机器上,这就是gzip_static想要解决的问题。

基本上我的问题是,是否有可能以这种方式工作?如果它是如何做到的:))

1 个答案:

答案 0 :(得分:0)

根据this forum postetag on与可能修改回复的proxy_pass不兼容(如gzip_static所示):

  

它所使用的ETag标题强大,意味着它必须是   每当实体的位改变时改变。这基本上   意味着必须通过更改的过滤器删除ETag标头   回复内容。

正如同一篇文章所述,通过Last-Modified通常足以让客户提出有条件的请求。