我有一个Rails网络应用程序,它在动态的restful urls下有静态文件。例如:
/projects/1/attachments/some_file.xls
我想将Nginx设置为重定向到服务器上的静态文件:
/public/attachments/1/some_file.xls
其中1是动态项目ID。
位置阻止和重写语句如何查找Nginx配置文件?
更新
我在下面给出了答案,因为它回答了我原来的问题。虽然在我的情况下不需要重写我的项目附件网址。我忘了我已经在我的Rails视图中重新映射了url。
我的真正目标是阻止Thin将缓存响应标头添加到我的附件文件中。最终,我能够通过添加像这样的附件的位置来防止这种情况发生:
location /attachments/ {
expires off;
add_header Pragma "no-cache";
add_header Cache-Control "no-cache, no-store";
access_log off;
break;
}
答案 0 :(得分:0)
这是一个简单的例子。
location /project/ {
rewrite ^/project/([0-9]+)/attachments/(.*)$ /public/attachments/$1/$2 last;
}
如果您想要更复杂的规则,请参阅官方帮助。
答案 1 :(得分:0)
听起来你的图像/文件库出了问题,因为你不应该为Paperclip,Dragonfly等做任何nginx重写规则。例如,在Paperclip中,您可以在模型中使用DSL时显式设置URL和/或路径格式。对于Paperclip,它看起来像这样:
has_attached_file :attachment,
:url => '/attachments/:id/:style/:basename.:extension',
:path => ':rails_root/public/attachments/:id/:style/:basename.:extension'
然后一切都应该由nginx自动提供,因为它在你的公共目录中。不需要重写规则。