を使用してnginxとrailsを介して静的コンテンツを提供しようとしていX-Accel-Redirect
ます。このようなレールルートフォルダーにある私の実際の静的コンテンツディレクトリ
- "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/;
}
リクエストを正常に検出し、それをレールに渡します。オンレールでやっている
class ReaderController < ApplicationController
def resource
send_file "#{Rails.root}/books/sources/"+ params[:id] + "/" + params[:resource] + "." + params[:format]
end
end
ファイル情報をnginxに返しますが、レールは私の設定のX-Accel-Mappingを理解していないようです。そのため、nginx がファイルを読み込もうとすると、このエラーが発生します
ActionController::RoutingError (一致するルートはありません [GET] "/home/voodoo/work/reader/books/sources/229/OPS/cover.xml"):
私はこれが によるものだと強く信じていincorrect X-Accel-Mapping in nginx
ます。しかし、何を理解することはできません。誰かが私を助けることができます。ここ数時間、私はこれに悩まされています。