To understand this correctly - theese requests aren’t coming directly
from
google servers (otherways unleast you put nginx as a proxy above google
it
won’t be able to cache anything)?
The URLs that are not being cached are of this form:
URI?id=parameter&h=parameter or URI?
id=parameter&h=parameter&w=parameter
Can you show what the full request headers look like (for example with:
wget -S url)?
You have: proxy_cache_valid 200 1d;
which means that only 200 responses are cached and not for example 301
or
302 … (you can try to remove ‘200’ and see if the response is cached
then).
Thank you for your insights. In regards to the wget -S url, this is
what I get:
–2011-10-05 18:09:32– http://myWebDomain.com/contentAsset/resize-image/7e061df4-0fc3-481f-b75d-7ce3ff2e8cac/?w=175
Resolving myWebDomain.com… IP ADDRESS
Connecting to myWebDomain.com|IP ADDRESS|:80… connected.
HTTP request sent, awaiting response…
HTTP/1.1 404 Not Found
Server: nginx
Date: Wed, 05 Oct 2011 14:09:32 GMT
Content-Type: text/html;charset=UTF-8
Connection: close
Vary: Accept-Encoding
Set-Cookie: JSESSIONID=5AB2FF5CF72E237DCEC48FAE19AE09F4; Path=/
Set-Cookie: SHARED_SESSION_ID=GZ3W4CP2F07E; Expires=Thu, 06-
Oct-2011 14:09:32 GMT; Path=/
2011-10-05 18:09:32 ERROR 404: Not Found.
Note the address “contentAsset/resize-image/7e061df4-0fc3-481f-
b75d-7ce3ff2e8cac/?w=175” is inside an image tag. If I disable the
cache, it works fine.
I tried to set proxy_cache_valid any 1d; and proxy_cache_valid 200
404 1d; Then, clear the cache, and restarted nginx and it still stays
the same.
–2011-10-05 18:09:32– http://myWebDomain.com/contentAsset/resize-image/7e061df4-0fc3-481f-b75d-7ce3ff2e8cac/?w=175
HTTP/1.1 404 Not Found
Server: nginx
Content-Type: text/html;charset=UTF-8
Vary: Accept-Encoding
Set-Cookie: JSESSIONID=5AB2FF5CF72E237DCEC48FAE19AE09F4; Path=/
Set-Cookie: SHARED_SESSION_ID=GZ3W4CP2F07E; Expires=Thu, 06- Oct-2011 14:09:32
GMT; Path=/
2011-10-05 18:09:32 ERROR 404: Not Found.
Without the full nginx config (and the application specifics (looks like
some java app/tomcat?) you are trying to proxy/cache) it is
hard to understand what is going wrong.
While you are getting a 404 response nginx cache should not influence if
the object exists or not on the backend (unless the backend
is using something dynamic (like active sessionid/cookie) for the
embedded object/image serving).
Is it possible to get the request/headers for the object directly from
the backend (without nginx)?
Also can you show the proxy_cache_path for STATIC zone and/or check if
nginx actually creates any cache file there?
In the end you could also enable/check the nginx error_log in more
verbose mode.
But if it was intended to cache the 404 responses it is clear why nginx
didn’t it before since proxy_cache_valid didn’t have 404
specified.