I am facing an issue with rails application deployed on Amazon with
nginx
and unicorn. I am not using any controller or action to render a view,
rather I am using a simple html page inside a sub folder of public
folder
named html_app. And all the css, js and images are kept inside that
html_app folder with the same name. see below:
public/html_app/js/test.js
public/html_app/css/test.css
public/html_app/img/test.png
public/html_app/index.html
In order to use browser caching, I have given below configuration for
nginx
in config/nginx.conf, see below:
upstream unicorn {
server unix:/tmp/unicorn.cache_app.sock fail_timeout=0;
}
server {
listen 80;
server_name x.x.x.x;
root /home/ec2-user/cache_app/public;
location ^~ /home/ec2-user/cache_app/public {
gzip_static on;
expires max;
add_header Cache-Control public;
}
location ^~ /.(jpg|jpeg|gif|css|png|js|ico)/ {
gzip_static on;
expires 1d;
add_header Cache-Control public;
add_header Last-Modified “”;
add_header ETag on;
break;
}
try_files $uri/index.html $uri @unicorn https://github.com/unicorn;
location @unicorn https://github.com/unicorn {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://unicorn;
}
error_page 500 502 503 504 /500.html;
client_max_body_size 20M;
keepalive_timeout 10;
}
Everything is working except, expires in location block, if I define
expires globally, it works, but not inside the location.
Please suggest, where am I wrong ?
Thanks