O Nginx certamente pode fazer isso, você só precisa especificar cada cabeçalho do host ( server_name
) e separar os upstreams para atribuir um para cada host.
Um snippet de servidor nginx como esse pode funcionar (fora da minha cabeça e não testado):
upstream one { server h1.abc.example.com; }
upstream two { server h2.abc.example.com; }
server {
listen 8080;
server_name abc-h1.abc.example.com;
location / {
proxy_pass one;
}
}
server {
listen 8080;
server_name def-h1.abc.example.com;
location / {
proxy_pass two;
}
}
Existem também outros manipuladores de proxy ( fastcgi_pass
, uwsgi_pass
, scgi_pass
, memcached_pass
) se você quiser enviar tráfego para algo que não seja um endpoint HTTP
EDIT: corrija erroneamente server_name