尽管位于“/public”目录中,但如果我访问“http://site.example.com/favicon.ico”,会出现404页面。有趣的是,如果我尝试访问“http://site.example.com/500.html”,我也会得到404页面,这使我相信根本没有提供“/public”文件。我正在使用Nginx和Unicorn。是否有Rails设置可以禁用提供“/public”资产的功能?
编辑
我的nginx配置:
server {
listen 80;
client_max_body_size 4G;
server_name _;
keepalive_timeout 5;
# Location of our static files
location ~ ^/(assets)/ {
root /srv/ctr/current/public;
gzip_static on; # to serve pre-gzipped version
expires max;
add_header Cache-Control public;
}
location / {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
# If you don't find the filename in the static files
# Then request it from the unicorn server
if (!-f $request_filename) {
proxy_pass http://app_server;
break;
}
}
# error_page 500 502 503 504 /500.html;
# location = /500.html {
# root /var/rails/testapp/public;
# }
}
我在路由中有root :to => 'reports#index'
,但我不知道它会有什么区别。
解决方法
我将root /srv/ctr/current/public;
这一行移到了keepalive_timeout 5;
上面。