配置nginx的服务缓存图片(Configure nginx to serve cached ima

2019-10-18 00:47发布

我有一个Rails应用程序在生成大量图像; 即,图像控制器与显示动作取从SAN的图像,并且提供它。 我对此有caches_page能可靠地保存在一个自定义位置的文件的副本; RAILS_ROOT + /公/缓存。 该文件在那里,看起来不错。

我通过服务nginx的应用程序,它似乎很好地工作,但对我的生活,我不能把它送的,而不是击中轨动作的缓存图像文件。 我是很新,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;
      }

Answer 1:

你也可以直接缓存图片上的Nginx使用MemcachedModule 。



Answer 2:

为nginx的推荐的方法是使用了“try_files”指令

就像是

location /images/show {
    try_files $document_root/cache$uri;
}


文章来源: Configure nginx to serve cached images
标签: nginx