当Rails应用程序落后于Apache代理/反向代理时,如何配置路由?

时间:2014-02-19 06:32:19

标签: ruby-on-rails apache

目前,http://www.example.com/由Apache提供服务。不久前,还有一个内部运行的Rails博客应用程序:

  http://192.168.10.1:3000

现在我们想让用户从互联网访问内部应用程序,因此将Apache proxy / reverseproxy设置为:

<Location /blog>
  Order deny,allow
  Allow from all
  ProxyPass http://192.168.10.1:3000
  ProxyPassReverse http://192.168.10.1:3000
</Location>

希望用户可以通过以下方式访问博客应用程序:

  http://www.example.com/blog

问题是,重定向的Rails路由都是错误的,例如:http://www.example.com/blog需要登录,未登录的用户被路由到/login重定向到:

  http://www.example.com/login

(不存在,并且不加载js和css等资源),而不是:

  http://www.example.com/blog/login

有没有办法配置rails路由来处理上述要求?或者根本不可能在Apache背后代理Rails应用程序?

2 个答案:

答案 0 :(得分:0)

您可以尝试使用.htaccess代理方法:

我们假设这是您的应用http://192.168.10.1:3000

创建以下.htaccess规则:

RewriteRule ^blog/(.*)$ http://192.168.10.1:3000/$1 [P]
在此示例中

:访问http://www.example.com/blog/<anything>链接的客户将代理到http://192.168.10.1:3000/<anything>

我希望这会有所帮助

答案 1 :(得分:0)

无法运行

ProxyPass /blog http://192.168.10.1:3000

http://httpd.apache.org/docs/2.2/mod/mod_proxy.html