On Sat, Nov 2, 2013 at 12:16 AM, Maxim D. [email protected]
wrote:
What would be required if I want to honor the ETag of cached pages? Is
something that can be achieve by means of configuration? or I would need
to
write an nginx module in C?
It is expected to just work in 1.3.3+. If you don’t see it
working, you may want to check the version you are running.
Hi maxim,
yeap I’m running 1.4.1 but I never get a 304
This is what a response from cache looks like
wget --no-check https://[fdf5:5351:1dfd:0:0:0:0:2]/api/ -S --header
‘If-None-Match: “83393a3900e4abce27212d7a27cae589”’ -q
HTTP/1.1 200 OK
Server: nginx/1.4.1
Date: Sat, 02 Nov 2013 01:40:24 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
ETag: “83393a3900e4abce27212d7a27cae589”
Allow: GET, HEAD, OPTIONS
Vary: Accept, Cookie, Accept-Encoding
Expires: Sat, 02 Nov 2013 01:41:24 GMT
Cache-Control: max-age=60
This is my nginx config for this cached location
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_redirect off;
proxy_ignore_headers Set-Cookie;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Protocol $scheme;
proxy_cache cache;
proxy_cache_key
$host$uri$is_args$args$http_accept_encoding$http_accept;
proxy_cache_valid 1m;
expires 1m;
set $skip_cache 0;
if ($request_method != GET) {
set $skip_cache 1;
}
if ($http_cookie) {
set $skip_cache 1;
}
if ($http_authorization) {
set $skip_cache 1;
}
proxy_cache_bypass $skip_cache;
}
Maybe is there some conflicting configuration? I can not see it and
ETags work just fine if I request to my backend server
“77e348fb6260a8dd90ca18c61f7cd472”’ -q
HTTP/1.1 304 NOT MODIFIED
Server: nginx/1.4.1
Date: Sat, 02 Nov 2013 01:47:30 GMT
Content-Length: 0
Connection: keep-alive
Notice the etag value from cached content is different from the fresh
one,
even though the content is exactly the same, I presume this is nginx
doing
its job of updating the ETag for some differences because of caching,
but
still fails to reply a conditional request properly
Thanks for your help!!