我正在尝试通过 nginx 和 rails 使用X-Accel-Redirect
. 我的实际静态内容目录位于 rails 根文件夹,如下所示
- "rails_root\books\sources\:book_id\remaining_path".
只有那个rails_root\books\sources
是不变的,其余的部分总是在变化的。前任
-app\books\sources\111\oep\cover.html
-app\books\sources\111\oep\images\xx.png
我尝试使用以下配置设置 nginx
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。在铁轨上做
class ReaderController < ApplicationController
def resource
send_file "#{Rails.root}/books/sources/"+ params[:id] + "/" + params[:resource] + "." + params[:format]
end
end
它将文件信息返回给 nginx,但似乎 rails 不理解我的配置的 X-Accel-Mapping。所以当nginx试图读取文件时,会发生这个错误
ActionController::RoutingError (没有路由匹配 [GET] "/home/voodoo/work/reader/books/sources/229/OPS/cover.xml"):
我坚信这是由于incorrect X-Accel-Mapping in nginx
. 但想不通是什么。有人可以帮我吗。在过去的几个小时里,我对此感到震惊。