我有一个Rails应用程序,它可以生成大量图像;即带有show动作的图像控制器从SAN获取图像并提供服务。我有一个caches_page可以在自定义位置可靠地保存文件的副本; RAILS_ROOT +/public/cache。这些文件在那里,看起来很好。配置nginx提供缓存图像
我通过nginx提供的应用程序,它似乎工作正常,但对于我的生活我无法让它发送这些缓存的图像文件,而不是击中rails的行动。我对nginx非常陌生,并且一直在研究它一段时间,但无论我尝试什么都行不通 - 我正在做一些根本错误的事情。
为了澄清,我有一个这样的URI:
/images/show/123.jpg
该文件可能存在的位置:
/cache/images/show/123.jpg
我怎样才能让nginx的服务该文件并没有通过在要求?
这里是什么,我已经试过一个不完整的列表:
if (-f /cache$request_filename) {
rewrite (.*) /cache$1 break;
break;
}
if (-f /cache$uri.jpg) {
rewrite (.*) /cache$1.jpg break;
}
if (-f /cache/images/show/$request_filename) {
rewrite (.*) /cache/images/show/$1.jpg break;
}
任何想法?
更新:我回答了我自己的问题。正确的规则是:
if (-f $document_root/cache$request_uri) {
rewrite (.*) /cache$1 break;
}
http://serverfault.com/questions/262995/how-do-i-dry-up-this-nginx配置/ 263854#263854 http://serverfault.com/questions/263223/nginx-serve-htm-if-exists-instead-of-php/263395#263395 – 2011-05-05 11:39:04