how to add Cache-Control: public to static files

Maxim Dounin mdounin at mdounin.ru
Tue Oct 6 11:08:11 MSD 2009


Hello!

On Tue, Oct 06, 2009 at 04:17:20AM +0200, Jauder Ho wrote:

> 
> 
> Hi, I have nginx set up to serve static content and to set it to maximum
> expires currently. However, I would also like to set the Cache-Control
> flag to public so that proxies will know that this is okay to cache.
> However, when I try this using the add_header directive, this adds an
> additional Cache-Control: header instead of modifying the existing one.
> 
> nginx config fragment:
>     location ~* ^.+\.(jpg|jpeg|gif|png|ico)$ {
>         access_log off;
>         expires max;
>         add_header Cache-Control public;
>     }
> 
> 
> what I get using curl:
> HTTP/1.1 200 OK
> Date: Tue, 06 Oct 2009 02:12:27 GMT
> Content-Type: image/gif
> Content-Length: 96
> Last-Modified: Thu, 17 Sep 2009 01:51:06 GMT
> Connection: close
> Vary: Accept-Encoding
> Expires: Thu, 31 Dec 2037 23:55:55 GMT
> Cache-Control: max-age=315360000
> Cache-Control: public
> Accept-Ranges: bytes

Multiple Cache-Control lines are perfectly valid per RFC2616, it 
shouldn't cause any problems.

If you really want them to be in single line, just set everything 
in add_header instead of using "expires max" to set 
Cache-Control: max-age and Expires.  E.g.

     add_header Expires "Thu, 31 Dec 2037 23:55:55 GMT";
     add_header Cache-Control "public, max-age=315360000";

Maxim Dounin





More information about the nginx mailing list