O que você está procurando é chamado de "proxy reverso". Existem muitos servidores da Web com esse recurso, incluindo o Apache httpd, lighttpd e nginx, além de servidores Web mais simples projetados exclusivamente para proxy reverso.
Como o Apache é mais provável de estar disponível para você e / ou mais fácil de implantar, esse trecho de código a ser incluído na seção relevante dos arquivos de configuração do Apache deve fornecer a configuração mínima para o que você precisa, supondo que você ter mod_proxy_http instalado e ativado:
# ... [snip] ...
<VirtualHost *:80>
# ... [snip] ...
# This line prevents mod_proxy from acting as a forward proxy
# Yes it looks silly, but it's correct for reverse proxy configurations
ProxyRequests Off
# Rails app on port 8080
ProxyPass /app1 http://localhost:8080
ProxyPassReverse /app1 http://localhost:8080
# CherryPy app on port 8081
ProxyPass /app2 http://localhost:8081
ProxyPassReverse /app2 http://localhost:8081
# ... [snip] ...
</VirtualHost>
Atualizar : aqui estão alguns links para documentação (às vezes densa) de vários servidores:
Palavra para o sábio
Considere também que, com o proxy reverso, os aplicativos de back-end não estarão mais recebendo solicitações do IP do cliente que está iniciando a solicitação. Em vez disso, todas as solicitações parecerão vir do host local (127.0.0.1). Portanto, qualquer lógica relacionada ao IP do cliente deixará de funcionar. Se seu aplicativo precisar desses metadados de solicitação, você precisará seguir um procedimento dependente de seu servidor HTTP de proxy reverso.
No Apache, mod_proxy adiciona automaticamente um cabeçalho X-Forwarded-For à solicitação cujo valor é o endereço IP da solicitação que entrou no Apache (ou uma lista de IPs que encaminharam a solicitação, se você tiver uma cadeia de vários proxies reversos). Para o Nginx, acredito que você tenha que instruir o servidor a enviar tal cabeçalho (os detalhes estão no link acima).
Se o seu aplicativo de back-end se importar com o cabeçalho Host: da solicitação original do cliente, você precisará modificar esse código para procurar (no Apache) o cabeçalho X-Forwarded-Host também.