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.