Nginx does not Cache Google Adsense and Some other widgets - help

Nginx 1.0.x

I have set up my cache like this:

proxy_cache_key $host$uri$is_args$args;
proxy_cache_methods POST;
proxy_cache STATIC;
proxy_cache_valid 200 1d;
proxy_cache_use_stale error timeout invalid_header updating http_500
http_502 http_503 http_504;

The URLs that are not being cached are of this form:

URI?id=parameter&h=parameter or URI?
id=parameter&h=parameter&w=parameter

Any ideas how I can configure the cache key so that uris with those
parameters get cached too?

Thanks,

Alex

Nginx does not Cache Google Adsense

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).

rr

Dear RR:

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.

rr

Dear RR:

The application uses tomcat. It is a java 2EE cms called dotCMS. Here
are the headers without NGINX:

HTTP request sent, awaiting response…
HTTP/1.1 200 OK
Date: Wed, 05 Oct 2011 17:53:05 GMT
Server: Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-
rhel5 mod_bwlimited/1.4 mod_jk/1.2.31
Set-Cookie: JSESSIONID=0B54F628C20BD330D58B871703A27128; Path=/
Expires: Thu, 04 Oct 2012 17:53:05 +0000
Cache-Control: public, max-age=31536000
Last-Modified: Wed, 05 Oct 2011 13:38:53 GMT
ETag: dot:null:1317821933000:64442
Content-Length: 64442
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/png
Length: 64442 (63K) [image/png]

My config file is here http://pastebin.com/Ubi0pjyq

Yes, the CACHE is created. This is what I see in the cache directory.

0 1 2 3 4 5 6 7 8 9 a b c d e f tmp

I appreciate your help!

Alex