0

と で実行されている 2 つの別個のアプリケーションがwww.a.comありwww.b.comます。2 つ目は rails-3 アプリケーションです。Cookie を共有して 2 つの間で共通のログインを機能させるために、すべてのリクエストを にリダイレクトしwww.a.com/bていますwww.b.com。これを実現するためにApacheリバースプロキシを使用しています:

ProxyPass /b/ http://www.b.com/

www.a.comこれは、すべてのアセット/javascript リンクがルートであると想定することによって形成されているという事実を除けば、うまく機能します。例えば:

<%= javascript_include_tag 'js/bootstrap-datepicker'%>

http://a.com/assets/js/bootstrap-datepicker.js私はこれが欲しいのですが、リンクになりますhttp://a.com/b/assets/js/bootstrap-datepicker.js

私はこれを解決しています:

config.action_controller.asset_host = "http://a.com/analytics"

解決策が少しハックであることがわかりましたが、これはうまく機能します。本当の問題は、アプリケーションに他のページへのリンクを配置したときに始まります。という名前のページへのリンクを配置するには、hrefpageを配置する必要があります。b/pageこれは、a.com を使用してアプリケーションにアクセスしているときに正常に機能します。www.b.com/b/pageしかし、これでは b.com を使用してアプリにアクセスすることはできません。リンクが明らかに存在しないリンクを指し始めるからです。

a.com または b.com を使用してアプリケーションにアクセスできるようにするには、どうすれば全体を機能させることができるでしょうか。

4

1 に答える 1

0

問題の別の解決策として、リバース プロキシの代わりにサブドメインと CNAME/ALIAS を使用します。

a.com/b を b.com にリバース プロキシする代わりに。DNS で CNAME/ALIAS を使用して、b.com で実行されているアプリケーションを new.a.com にポイントします。

Cookie ドメインを www.a.com ではなく a.com として設定し、Cookie がサブドメイン間で共有されるようにします。

config/initializers/session_store.rb

YouApplicationName::Application.config.session_store :cookie_store, key: 'some_key', :domain => ".a.com"
于 2013-04-25T10:41:34.593 に答える