Welcome! Log In Create A New Profile

Advanced

nginx not returning updated headers from origin server on conditional GET

September 11, 2016 06:56AM
I have nginx and its cache working as expected apart from one minor issue. When a request is made for the first time it hits the origin server, returns a 200 and nginx caches that response. If I make another request I can see from the X-Cache-Status header that the cache has been hit. When I wait a while knowing the cache will have expired I can see nginx hit my origin server doing a conditional GET because I have proxy_cache_revalidate on; defined.

When I check if the resource has changed in my app on the origin server I see it hasn't and return a 304 with a new Expires header. Some may argue why are you returning a new Expires header if the origin server says nothing has changed and you are returning 304. The answer is, the HTTP RFC says that this can be done https://tools.ietf.org/html/rfc7234#section-4.3.4

One thing I have noticed, no matter what headers are I add or modify, when the origin server returns 304 nginx will give a response with the first set of response headers it saw for that resource.

Also if I change the Cache-Control:max-age header value from the first request when I return the 304 response it appears nginx obeys the new value as my resource is cached for that time however the response header value is that of what was given on the first request not the value that I modified on the 304 response. This applies to all subsequent requests if the origin server issues a 304.

I am running nginx version: nginx/1.10.1
Subject Author Posted

nginx not returning updated headers from origin server on conditional GET

jchannon September 11, 2016 06:56AM

Re: nginx not returning updated headers from origin server on conditional GET

B.R. September 12, 2016 04:18AM

Re: nginx not returning updated headers from origin server on conditional GET

Maxim Dounin September 12, 2016 11:00AM

Re: nginx not returning updated headers from origin server on conditional GET

jchannon September 14, 2016 02:19AM

Re: nginx not returning updated headers from origin server on conditional GET

Maxim Dounin September 14, 2016 11:14AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 139
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready