Rails + Passenger on Heroku: set expiry date or a maximum age in the HTTP headers for static assets

I’m using Rails api with an angularjs front-end which is served simply as static files under public directory (no sprockets or rails assets pipeline involved).

I’ve chosen passenger as the app server, deployed to heroku and everything seems to be working fine except for caching.

Since static assets are served directly by passenger/nginx, I’m thinking this has nothing to do with rails, is this correct?

But I have no idea how to set cache headers or where to add configurations.

Response headers when requesting a static file (application-a24e9c3607.js):

Connection: keep-alive
Content-Length: 0
Etag: "5696ce02-43102"
Last-Modified: Wed, 13 Jan 2016 22:21:54 GMT
Server: nginx/1.8.0
Via: 1.1 vegur

Any help appreciated. Thanks.

I’m using Rails api with an angularjs front-end which is served simply as static files under public directory (no sprockets or rails assets pipeline involved).

I’ve chosen passenger as the app server, deployed to heroku and everything seems to be working fine except for caching.

Since static assets are served directly by passenger/nginx, I’m thinking this has nothing to do with rails, is this correct?

But I have no idea how to set cache headers or where to add configurations.

That sounds correct. I don’t know how one does this with nginx but with apache I configure apache to set an Expires / cache control header for anything in assets/. It looks like Module ngx_http_headers_module is the relevant bits of the nginx docs.

Fred

Thank you Frederick, I figured it out and answered my own question here.