我有一个运行 nginx 的服务器,它提供一个用 ratpack 构建的 web 应用程序,当从浏览器或 curl 请求网站时,我无法获得 304 响应。
Nginx 配置:
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_read_timeout 240;
proxy_pass http://example.com/;
proxy_redirect off;
add_header Last-modified "Wed, 29 Nov 2017 12:56:25";
if_modified_since before;
}
从浏览器我总是得到 200 ok 和 curl 我得到
HTTP/1.1 302 Found
Server: nginx/1.6.3
Date: Wed, 29 Nov 2017 14:23:07 GMT
Content-Length: 0
Connection: keep-alive
location: http://example.com/display
Last-Modified: Wed, 29 Nov 2017 12:56:25
我已经尝试了这两个 curl 命令,并且都给出了上述响应:
curl -I -H "If-Modified-Since: Wed, 29 Nov 2017 14:27:08" -X GET
https://example.com
curl -I -H "If-Modified-Since: Wed, 29 Nov 2017 14:27:08"
https://example.com
为什么我在浏览器中得到 302 curl 和 200 ok?我究竟做错了什么?我可以看到浏览器正在使用“If-Modified-Since”标头发出请求。当我重新加载页面资源时,将从浏览器缓存中加载,并且通过硬重新加载所有资源都会得到 200 ok。