nginxを使用して 2 つの Rails サイトを提供しています。Rails1 はアセット パイプラインを使用しませんが、Rails2 は使用します。Rails2 も接頭辞を使用して Rails1 と区別しています。例えば:
http://myhost -> Rails1 http://myhost/abc -> Rails2
両方のサイトが実行されていますが、Rails2 サイトのアセットへの参照が見つかりません。
私の疑似nginx.confは次のようになります。
http {
上流のレール1 {
サーバー 127.0.0.1:3000;
}
上流のレール2 {
サーバー 127.0.0.1:3030;
}
サーバー {
場所 ~ ^/assets/ {
最大有効期限;
add_header キャッシュ コントロール public;
access_log off;
}
場所/abc {
proxy_pass http://rails2;
}
位置 / {
proxy_pass http://rails1;
}
}
}
また、Rails 2 アプリの routes.rb :
Rails2App::Application.routes.draw do
scope '/abc' do
resources :projects
root :to => 'home#index'
end
end
Rails2http://myhost/abc/アプリを参照すると、css のないページが表示され、次のエラーが表示されます。
GET http://myhost/assets/application-asdasd.css 404 (見つかりません)
config.assets.prefix = '/abc'production.rb ファイルで使用しようとしましたが、うまくいきませんでした。また、 ngnix.conf ファイルでさまざまなバリエーションを試しましたが、どちらも役に立ちませんでした。
私が間違っていること、または行方不明になっていることを知っている人はいますか?
アップデート
理由はよくわかりませんが、アップストリームの代わりに @location を使用して (誤って) 動作させることができました。しかし、assets フォルダーを Rails2 アプリから Rails1 アプリに移動する必要がありました。正確には理想的ではありません。
サーバーセクションへの変更:
場所 ~ ^/(資産)/ {
最大有効期限;
add_header キャッシュ コントロール public;
access_log off;
}
場所 ~ ^/(abc)/ {
ルート /rails2/public;
try_files $uri/index.html $uri.html $uri @rails2;
error_page 404 /404.html;
error_page 422 /422.html;
error_page 500 502 503 504 /500.html;
error_page 403 /403.html;
}
位置 / {
ルート /rails1/public;
try_files $uri/index.html $uri.html $uri @rails1;
error_page 404 /404.html;
error_page 422 /422.html;
error_page 500 502 503 504 /500.html;
error_page 403 /403.html;
}
場所 @rails1 {
proxy_pass http://127.0.0.1:3000;
}
場所 @rails2 {
proxy_pass http://127.0.0.1:3030;
}