繁体   English   中英

如何使Rails应用程序在两个域(反向代理)上运行

[英]How to get Rails application working on two domains, Reverse Proxy

我有两个单独的应用程序分别在www.a.comwww.b.com上运行。 第二个是Rails-3应用程序。 为了通过共享cookie在两者之间进行一些通用的登录,我将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"

即使我发现解决方案有点笨拙,也可以正常工作。 当我在应用程序中放置指向其他页面的链接时,真正的问题就开始了。 因此,为了将链接链接到名为page ,我需要将b/page放在我的href中。 当我使用a.com访问应用程序时,此方法工作正常。 但这不允许我使用b.com访问该应用,因为该链接开始指向www.b.com/b/page ,该链接显然不存在。

如何使整个工作正常进行,以便可以使用a.com或b.com访问我的应用程序。

您可以使用子域和CNAME / ALIAS代替反向代理来解决您的问题。

而不是将a.com/b反向代理到b.com。 您使用DNS中的CNAME / ALIAS将new.a.com指向在b.com运行的应用程序。

将Cookie域设置为a.com而不是www.a.com,以便在子域之间共享Cookie。

config / initializers / session_store.rb

YouApplicationName::Application.config.session_store :cookie_store, key: 'some_key', :domain => ".a.com"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM