Hello!
On Fri, Sep 16, 2011 at 03:29:23PM -0500, Patrick Aljord wrote:
> Hey Maxim,
>> Ok so after investigation I realized that this one worked:
>> /images/q-icon-medium.png
>> But these two did not have expire cache:
>> /packages/base.js
> /_files/groups/medium/4af798a119ce955bd1000001/0.png
>> So I added this to the conf:
>>> location /packages/ { expires max; }
> location /_files/ {
> expires max;
> }
>> This fixed the '/packages/base.js' cache but I started getting a 404
> on the '/_files/groups/medium/4af798a119ce955bd1000001/0.png'. So I
> removed the "location /_files/" from the conf. The thing is that this
> file does not come from the hard drive. It comes from the web app (I'm
> using unicorn for rails + nginx). Any idea how I should set the expire
> headers for those assets that come from the app? Should I set them in
> the rails app?
Either set it from app, or pass to app while still setting
expires. Something like this should work:
location /_files/ {
expires max;
proxy_pass http://foo_app_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
If some data in /_files/ may be actually static files on disk, you
may want to add try_files with named location, much like in
"location /" + "location @app" in your config, but with expires
set. I.e. something like this:
location /_files/ {
expires max;
try_files ... @appstatic;
}
location @appstatic {
expires max;
proxy_pass http://foo_app_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
}
Maxim Dounin