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