Nginx Nginx 反向代理回来会将 etag、last_modified header 删除

winterwhisper · 发布于 2015年11月20日 · 最后由 winterwhisper 回复于 2015年11月20日 · 2115 次阅读
6170

已知nginx 1.7.3以下的版本会在gzip的过程中remove掉etag,已经将nginx升级到1.8.0,rails后端返回的也是weak etag。

用浏览器访问(get请求)观察nginx debug日志发现如下

2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy status 200 "200 OK "
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Etag: W/"89a9be4e07c81409d305591384a34d8f""
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Last-Modified: Thu, 19 Nov 2015 02:37:54 GMT"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Content-Type: text/html; charset=utf-8"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Cache-Control: max-age=0, private, must-revalidate"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "X-Ua-Compatible: IE=Edge"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "X-Request-Id: b84d7a6314f2010e93e0d01684ec8bf5"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "X-Runtime: 0.048106"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Server: WEBrick/1.3.1 (Ruby/2.0.0/2014-10-27)"
2015/11/20 11:54:43 [debug] 16796#0: *573 posix_memalign: 00007FC78105FE00:4096 @16
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Date: Fri, 20 Nov 2015 03:54:43 GMT"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Content-Length: 9756"
2015/11/20 11:54:43 [debug] 16796#0: *573 http proxy header: "Connection: close"

上面是webrick返回给nginx的,然后nginx返回给client的就变成

Server: nginx/1.8.0^M
Date: Fri, 20 Nov 2015 03:54:43 GMT^M
Content-Type: text/html; charset=utf-8^M
Transfer-Encoding: chunked^M
Connection: keep-alive^M
Cache-Control: max-age=0, private, must-revalidate^M
X-Ua-Compatible: IE=Edge^M
X-Request-Id: b84d7a6314f2010e93e0d01684ec8bf5^M
X-Runtime: 0.048106

但用curl发一个head请求发现没有问题,存在etag和last_modified

感觉像是nginx在webrick返回过来的途中把etag、Last-Modified给drop掉了,求问各位有没有碰到过类似情况。

共收到 1 条回复
6170

找到原因了,是因为nginx开启了ssi。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册