Como reverter o proxy para locais diferentes, dependendo do subdomínio no Nginx?

13

Eu tenho vários subdomínios, todos apontando para uma máquina e um endereço IP. Nesta máquina, desejo que o nginx atue como um proxy reverso e, dependendo de qual subdomínio foi usado para acessar a máquina, desejo que ele revele o proxy para um servidor diferente. Todos os exemplos que eu vi do uso do nginx como proxy reverso são usados location, mas como eu entendo que só funciona para o caminho, não para subdomínios diferentes. Como posso conseguir o que quero?

markasoftware
fonte
2
Isso pode ser um pouco amplo demais. Você pode postar mais sobre o que você já tentou?
Will

Respostas:

27

A menos que eu tenha interpretado mal sua pergunta: você simplesmente configura blocos de servidor para cada subdomínio e define o proxy reverso correto para a raiz desse subdomínio, ou seja, algo como:

 server {
        server_name subdomain1.example.com;
        location / {
            proxy_pass       http://hostname1:port1;
        }
 }
 server {
        server_name subdomain2.example.com;
        location / {
            proxy_pass       http://hostname2:port2;
        }
 }
HBruijn
fonte
Desculpe pela resposta tardia, mas consegui funcionar!
Markasoftware 4/16
3

Praticamente da mesma maneira.

location /foo {
    rewrite ^/foo(.+)$ /$1 break;
    proxy_pass http://foo;
}

location /bar {
    rewrite ^/bar(.+)$ /$1 break;
    proxy_pass http://bar;
}
drookie
fonte
1
Não era exatamente isso que eu estava procurando. Veja a resposta aceita
markasoftware 4/16
1
Mastigar e digerir é o fardo do solicitante, não o meu.
drookie