Nginx :: Configurando proxy reverso para multiplos servers baseados no dominio

Share:
Créditos: SeeFromTheSky


Hoje vamos voltar a falar um pouco do nosso amigo Nginx, dessa vez solucionando uma duvida bem grande do pessoal:

"Como faço pra criar um proxy baseado no DNS da minha aplicação? Tenho X apps rodando no meu server, cada um em uma porta diferente, e queria cria um roteamento pro proxy entre esses serviços de acordo com o nome do domínio requisitado"

Bom, isso é bem simples de ser feito, e não foge muito do que já vimos nos outros posts sobre o tema. Então, vamos lá!


Exemplos

Imaginem o seguinte cenário:

APP1 rodando na porta 5000 com o endereço app1.com.br
APP2 rodando na porta 6000 com o endereço app2.com.br

Instalando o Nginx 

A instalação do Nginx é feita pelo gerenciador de pacotes da sua distribuição. 

sudo apt-get install nginx -y
sudo yum install nginx -y



Criando o proxy baseado no dominio

Configurando o APP1

Vamos criar um arquivo chamado app1.conf dentro da pasta sites-enabled.
Dentro dele vamos aplicar uma server configuration do Nginx da forma mais simples possível especificando o server_name como app1.com.br, e aplicando o proxy_pass do root location para o endereço http://127.0.0.1:5000, onde está rodando nosso app1. Nada mais que isso. 
vim /etc/nginx/sites-enabled/app1.conf


Configurando o APP2

Vamos repetir o que fizemos no APP1 agora dentro do arquivo app2.conf. Nele vamos trocar nosso server_name para app2.com.br e o proxy_path para o endereço http://127.0.0.1:6000, onde está rodando nosso app2.
vim /etc/nginx/sites-enabled/app2.conf


Reiniciando o serviço do Nginx

Vamos reiniciar o serviço do Nginx pra validar as configurações que acabamos que criar.

sudo service nginx restart

Agora testando via browser, podemos validar se o proxy já está funcionando.




Espero ter ajudado :)

5 comentários:

  1. Showww !! Gostaria de acrescentar que caso esteja usando docker, existe uma imagem a qual gera as configurações automaticamente, também há a possibilidade de você fazer alterações no template para configurações específicas do seu proxy reverso.

    https://github.com/jwilder/nginx-proxy

    ResponderExcluir
  2. Rapaz, que facilidade! Simples e fantástico demais!

    Parabéns pelo belo artigo.

    Tenho só umas dúvidas sobre utilização com HTTPS:

    1 - Como faz pra HTTPS ?

    2 - Como faz pra redirecionar para HTTPS se vier HTTP ?

    ResponderExcluir
  3. Boa tarde,

    Tem como usar expressão regular no arquivo de configuração ?

    por exemplo, suponhamos que existam vários subdominios que preisem ser acessados e esses subominios estejam em mais de um servidor do mesmo dominio:


    *** Servidor 1 ***
    site.com.br;
    www.site.com.br;
    app1.site.com.br;
    app2.site.com.br;

    *** Servidor 2 ***
    app3.site.com.br;

    *** Servidor 3 ***
    app4.site.com.br;


    Nao daria para usar o wildcard * por causa da distribuição dos subdominios em mais de um servidor... Se houvesse como usar expressão regular, evitaria a criação de vários arquivos de configuração, um para cada subdomínio que está no mesmo servidor.

    ResponderExcluir
  4. Pessoal, no meu caso eu tenho dois servidores com NGinx funcionando 100%, no A tem meus sites e no B tem uma aplicação... Como faço para que ao digitar o subdominio app.meudominio.com abre a aplicação?

    ResponderExcluir