在Nginx中,"etag"指令不适用于proxy_pass吗?

Han*_*Sun 2 https etag http nginx

我正在使用Nginx 1.9.2,以下是我的配置

upstream httpserver0{
            server 127.0.0.1:35011  max_fails=3 fail_timeout=30s; #H_server0                                                                                                                                                                                                                
}

server {
            listen       443 ssl;
            listen       80;
            server_name  11.22.33.44; #my_server_name                                                                                                                                                                                                          
            etag  on;

            location  ~* \.(ts|raw)$ {
              set $server_id "0";
              if ( $uri ~ ^/(.*cfs+)/(.*)$ ){
                set $server_id $1;
              }
              if ( $server_id = "4cfs" ){
                proxy_pass  http://httpserver0$request_uri;
              }
            }
}
Run Code Online (Sandbox Code Playgroud)

我正在使用上游模块和proxy_pass进行反向代理,我etag on在服务器块内启用了etag功能.

但是,当我检查HTTP响应的标头时,我根本找不到该etag字段.

有没有人有这个想法?谢谢!

Ale*_*Ten 6

不,它不起作用proxy_pass.

http://nginx.org/r/etag

启用或禁用自动生成静态资源的"ETag"响应头字段.

更重要的是,默认情况下它已打开.

  • @AlexeyTen Eh,代理可以生成“强”(即内容哈希)etag,并重新验证上游的每个请求,如果上游没有更改,则返回 304。这将非常有效地减少 nginx 和客户端之间的带宽。更进一步,我们还可以指定重新验证间隔,或者使用 Expires 来触发重新验证,而不是重新验证每个客户端请求。 (3认同)
  • 是.只有上游知道如何生成Etag以及何时应该将其视为过时的. (2认同)