Solicitações HTTP de proxy para servidores em portas diferentes, usando subdomínio

5

Digamos que eu tenha um servidor web Python minimalista em execução com várias instâncias, cada uma com portas diferentes especificadas como argumentos de linha de comando.

Gostaria que os pedidos para o meu servidor fossem redirecionados assim, usando o cabeçalho do host:

name1.mydomain.com -> localhost:8000
name2.mydomain.com -> localhost:8001
name3.mydomain.com -> localhost:8002

Isso é algo melhor feito com um servidor como o Lighttpd e fazendo algumas configurações de virtualhost - isso é possível?

Eu prefiro não usar peso pesado como o Apache.

Obrigado!

    
por Luke Stanley 16.07.2011 / 11:50

1 resposta

4

Com nginx você pode usar algo como seguir:

server {
  server_name name1.domain.com;
  location / {
    proxy_pass http://localhost:8000;
  }
}

server {
  server_name name2.domain.com;
  location / {
    proxy_pass http://localhost:8001;
  }
}

server {
  server_name name3.domain.com;
  location / {
    proxy_pass http://localhost:8002;
  }
}

BTW, existe outro método para obter o mesmo efeito usando a diretiva map :

map $http_host  $port {
    hostnames;

    default               8000;
    name1.example.com     8000;
    name2.example.com     8001;
    name3.example.com     8002;
}

server {
    listen       80;
    server_name ~^name\d.example.com;
    location / {
        proxy_pass http://127.0.0.1:$port;
    }
}
    
por 16.07.2011 / 16:47