Toda vez que eu preciso fazer isso eu volto para o HAProxy, este é outro pacote de proxy reverso que permite hospedar serviços múltiplos atrás de um único (ou múltiplos) IPs públicos.
Neste exemplo, eu instalaria o HAproxy em sua máquina com um endereço público.
Isso pode ser feito com APT-GET ou YUM, dependendo do seu destino. Uma vez instalado, dê uma olhada no arquivo de configuração (no Ubuntu, em /etc/haproxy/haproxy.cfg)
O HAProxy usa FRONTENDS e BACKENDS, Frontends para ligar a um IP: PORT e, em seguida, um backend no qual você especifica servidores (um ou mais).
Aqui está um exemplo da minha configuração para executar vários aplicativos de serviço da web por trás do meu IP residencial único. No meu caso eu estou usando várias portas no mesmo IP em meus backends, em seus exemplos, você gostaria de usar IP diferentes na porta 80.
#GLOBAL CONFIG
global
maxconn 1000
daemon
user haproxy
group haproxy
nbproc 1
pidfile /var/run/haproxy.pid
stats socket /var/run/haproxy.cmd mode 777 level admin
#ASSUMED DEFAULTS
defaults
log global
mode http
option httplog
option dontlognull
retries 3
maxconn 1000
contimeout 5000
clitimeout 50000
srvtimeout 50000
#STATS PAGE
listen stats 192.168.10.253:9000
mode http
stats enable
stats auth username:password
stats uri /proxy_stats
stats realm PAGE TITLE
####SABNZBD####
backend sabnzbd
server sabnzbd 192.168.10.253:8080 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
####SICKBEARD####
backend sickbeard
server sickbeard 192.168.10.253:8081 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
####COUCHPOTATO####
backend router
server router 192.168.10.254:80 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
####TROLL####
backend troll
# server troll www.meatspin.com:80 weight 1 maxconn 1000 check inter 10000
server troll www.google.com:80 weight 1 maxconn 1000 check inter 10000
option redispatch
option httpclose
option forwardfor
balance roundrobin
timeout server 120000
#NAS FrontEnd
frontend nas
bind PUBLIC_IP:80
reqadd X-Forwarded-Proto:\ http
default_backend troll
acl req_couchpotato hdr_beg(host) -i film.
acl req_sickbeard hdr_beg(host) -i tv.
acl req_router hdr_beg(host) -i home.
acl req_sabnzbd hdr_beg(host) -i warez.
use_backend couchpotato if req_couchpotato
use_backend sickbeard if req_sickbeard
use_backend sabnzbd if req_sabnzbd
use_backend router if req_router
Com isso no lugar e o PUBLIC_IP configurado no Frontend, o myserver escuta na porta 80, olha para o cabeçalho HTTP em solicitações de entrada e se ele vê uma requisição para o filme.meu_dominio.com ele usou o backend do couchpotato, se ele vir tv.mypersonaldomain.com usa o backend do sickbeard.
Por favor, observe as configurações de 'troll' que eu usei enquanto testava isso, o backend padrão se você for ao meu IP público sem especificar um URL correspondente foi enviar sua solicitação para a meatspin.com (NÃO IR PARA NESTE ENDEREÇO SE VOCÊ VALOR OS SEUS OLHOS), substituímos isso por google.com para este exemplo.
Muitas outras coisas podem ser feitas com o HAProxy, mas isso deve lhe dar uma boa idéia do básico. A documentação do HAPRoxy é bastante detalhada, mas também muito abrangente.
J