1

を使用して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ます。しかし、何を理解することはできません。誰かが私を助けることができます。ここ数時間、私はこれに悩まされています。

4

2 に答える 2

0

X-Accel-Mapping設定が間違っています。これを試してください:

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/;
  ...
}
于 2013-02-28T16:35:03.907 に答える
0

/readbook=/...私はあるべきだと信じています...=/readbook/

于 2013-01-24T18:19:37.610 に答える