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; }