【问题标题】:How to config route when a Rails app is behind Apache proxy/reverseproxy?当 Rails 应用程序位于 Apache 代理/反向代理之后时,如何配置路由?
【发布时间】:2023-03-13 11:48:01
【问题描述】:

目前http://www.example.com/ 由 Apache 提供服务。前段时间,有一个内部 Rails 博客应用在运行:

  http://192.168.10.1:3000

现在我们想让用户从互联网访问内部应用程序,所以设置 Apache 代理/反向代理为:

<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 应用程序?

【问题讨论】:

    标签: ruby-on-rails apache


    【解决方案1】:

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

    假设这是您的应用程序http://192.168.10.1:3000

    创建以下 .htaccess 规则:

    RewriteRule ^blog/(.*)$ http://192.168.10.1:3000/$1 [P]
    

    在此示例中:访问http://www.example.com/blog/&lt;anything&gt; 链接的客户将被代理到http://192.168.10.1:3000/&lt;anything&gt;

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      是不是可以跑了

      ProxyPass /blog http://192.168.10.1:3000
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-26
        • 2015-03-12
        • 2021-05-03
        • 2023-03-22
        • 1970-01-01
        • 2019-10-13
        • 2017-10-24
        • 2018-02-14
        相关资源
        最近更新 更多