Ruby on rails 为rails安全静态内容交付设置nginx X-Accel-Mapping
我正在尝试使用Ruby on rails 为rails安全静态内容交付设置nginx X-Accel-Mapping,ruby-on-rails,nginx,Ruby On Rails,Nginx,我正在尝试使用X-Accel-Redirect通过nginx和rails提供静态内容。我的实际静态内容目录位于rails根文件夹中,如下所示 - "rails_root\books\sources\:book_id\remaining_path". 只有rails\u root\books\sources是常量,其余部分总是变化的。前 - "rails_root\books\sources\:book_id\remaining_path". -app\books\sources\
X-Accel-Redirect
通过nginx和rails提供静态内容。我的实际静态内容目录位于rails根文件夹中,如下所示
- "rails_root\books\sources\:book_id\remaining_path".
只有rails\u root\books\sources
是常量,其余部分总是变化的。前
- "rails_root\books\sources\:book_id\remaining_path".
-app\books\sources\111\oep\cover.html
-app\books\sources\111\oep\images\xx.png
我尝试使用以下配置设置nginx
- "rails_root\books\sources\:book_id\remaining_path".
location ~ /readbook/*./.* {
internal;
alias /home/vooodoo/work/reader/books/sources/$1/$2;
}
location / {
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
proxy_set_header X-Accel-Mapping /readbook/=/home/vooodoo/work/reader/books/sources/;
proxy_pass http://127.0.0.1:3001/;
}
它成功地检测到请求并将其传递给rails。在轨道上,我在做什么
- "rails_root\books\sources\:book_id\remaining_path".
class ReaderController < ApplicationController
def resource
send_file "#{Rails.root}/books/sources/"+ params[:id] + "/" + params[:resource] + "." + params[:format]
end
end
class ReaderController
它将文件信息返回给nginx,但rails似乎不理解我的配置的X-Accel映射。因此,当nginx尝试读取文件时,会发生此错误
- "rails_root\books\sources\:book_id\remaining_path".
ActionController::RoutingError(没有与[GET]匹配的路由)
“/home/voodoo/work/reader/books/sources/229/OPS/cover.xml”):
- "rails_root\books\sources\:book_id\remaining_path".
我坚信这是由于nginx中的
不正确的X-Accel映射造成的。但我想不出是什么。有人能帮帮我吗。在过去的几个小时里,我一直对此感到震惊。我认为/readbook=/…
应该是..=/readbook/
您的X-Accel-Mapping
配置错误,请尝试以下操作:
- "rails_root\books\sources\:book_id\remaining_path".
location ~ /readbook/*./.* {
internal
alias /home/vooodoo/work/reader/books/sources/$1/$2;
}
location / {
...
proxy_set_header X-Sendfile-Type X-Accel-Redirect;
proxy_set_header X-Accel-Mapping /home/vooodoo/work/reader/books/sources/=/readbook/;
...
}
你能找到解决办法吗?