Configure um proxy reverso de Rack para Rails ou Sinatra ou qualquer pilha baseada em Rack

Usamos a maior parte do tempo para fazer proxy reverso do servidor front-end Apache ou Nginx.

Até recentemente, eu não sabia que poderíamos fazer isso também com o Rack.

Por quê ?

Imagine que você tenha que migrar páginas estáticas de seu aplicativo rails para outro host, como o que acontece para Codeship neste post que decidiu migrar sua documentação no Amazon S3.

Como ?

Por apenas 4 linhas de código em seu config.ru

require 'rack/reverse_proxy'

use
Rack::ReverseProxy do
reverse_proxy
/^/documentation/?(.*)$/, 'http://path-to-your-host/$1'
end

$ 1 é o caminho da página extraído do url original

Toda vez que alguém aponta para / documentation, seu aplicativo Rails devolve conteúdo estático do host de páginas estáticas, certo?

Tenho certeza de que vou usar essa técnica para meu próximo SaaS!