使用Rack& amp;的转发请求法拉第

时间:2012-09-24 18:16:10

标签: ruby http rack faraday

我想编写一个Rack应用程序,将请求转发到其他域。法拉第宝石可能适用于此。这样的事情会很好:

我的config.ru文件:

...
my_app = lambda do |env|
  conn = Faraday.new(env)
  conn.url = "http://some-other-domain.com"
  env.get? ? conn.get : conn.post
end

run my_app

难道这么简单吗?有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您可能希望查看rack-rewrite(https://github.com/jtrupiano/rack-rewrite)。您可以使用它来定义和应用重写和重定向规则。可能使用适合您用例的机架重写如下:

require 'rack/rewrite'
use Rack::Rewrite do
  r301 %r{.*}, 'http://mynewdomain.com$&', :if => Proc.new {|rack_env|
    rack_env['SERVER_NAME'] != 'mynewdomain.com'
  }
end
# rest of your app

重写规则的签名是rewrite_method(request_url_expression,rewrite_url_expression,options)。在此示例中,方法#r301将为使用请求URI(使用$&替换运算符)将给定正则表达式与新域匹配的所有请求URL提供永久重定向。文档中有更多信息。