Nginx :: Criando um serviço de proxy reverso rapidamente

Share:



Esse artigo vai mostrar a maneira mais simples de fazer um proxy reverso com intuito de Port Forward utilizando o servidor de alta performance Nginx.

Site do Nginx: https://nginx.org/en/
Documentação: https://www.nginx.com/resources/wiki/

Vamos supor que nós criamos um serviço que rode na porta 1234 de uma máquina qualquer, e precisar fazer com o Nginx crie um proxy reverso da porta 80 para a porta 1234, fazendo com que o mesmo funcione como uma ponte de ligação entre o cliente e o serviço. Para exemplificar, vamos supor que tenhamos um servidor Apache 2.4 rodando na porta 1234 do servidor.


Instalação do Nginx

Para fazer a instalação do Nginx, você deverá acessar a documentação para mais detalhes. Neste exemplo eu estarei utilizando o Debian 8 Jessie para os testes, mas o procedimento de instalação será o mesmo para todas as distribuições Debian Like. Após a instalação vamos confirmar se o serviço está Ok.


$ sudo apt-get install nginx 
$ sudo systemctl enable nginx
$ sudo systemctl start nginx 
$ sudo systemctl status nginx

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
   Active: active (running) since Sun 2017-05-21 20:12:44 GMT; 9min ago
 Main PID: 1642 (nginx)
   CGroup: /system.slice/nginx.service
           ├─1642 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
           ├─1643 nginx: worker process
           ├─1644 nginx: worker process
           ├─1645 nginx: worker process
           └─1646 nginx: worker process

May 21 20:12:44 jessie systemd[1]: Started A high performance web server and a reverse proxy server.
May 21 20:21:19 jessie systemd[1]: Started A high performance web server and a reverse proxy server.
vagrant@jessie:~/teste$

Pra verificar se está tudo Ok, vamos acessar a porta 80 do servidor


Criando o proxy reverso 

Vamos criar um arquivo chamado apache-proxy.conf onde vamos configurar nosso proxy reverso para fazer nosso redirect inicial do Nginx para o Apache

sudo vim /etc/nginx/sites-available/apache-proxy.conf

/etc/nginx/sites-enabled/apache-proxy.conf

Como vamos utilizar a porta 80 do servidor, devemos deletar o arquivo de configuração /etc/nginx/sites-enabled/default  que contém algumas configurações que ocupam essa porta. Em seguida vamos criar um link simbólico da do arquivo de configuração do proxy reverso para dentro da pasta sites-enabled antes de reiniciar o serviço.

$ sudo rm /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/apache-proxy.conf /etc/nginx/sites-enabled/apache-proxy.conf

$ sudo systemctl restart nginx 

Agora com o serviço reiniciado, vamos acessar a porta 80 do servidor.


Essa é a forma mais simples de fazer o serviço de redirecionamento de portas entre serviços utilizando o Nginx.

Espero ter ajudado :)

5 comentários:

  1. olá, isso funcionou para mim.

    Mas, como faço para o nginx direcionar para a porta 1234 baseado em uma url.

    Por exemplo todoas as chamadas de www.teste.com o nginx direcionar para a porta 1234?

    ResponderExcluir
  2. Este comentário foi removido pelo autor.

    ResponderExcluir
  3. Tenho a mesmo dúvida, Tenho uma aplicação rodando na porta 10000, e outra na porta 10001, gostaria de ter um subdomínio apontando para o ip desta aplicação e que isso fosse filtrado e direcionado para a porta especifica.

    HOST (sub1.meusite.com) redireciona para o servidor da aplicação na porta 10001
    HOST (sub2.meusite.com) redireciona para o servidor da aplicação na porta 10000

    Uma vez que o servidor de hospedagem do site é um e o servidor da aplicação é outro.

    ResponderExcluir
    Respostas
    1. Veja se esse artigo aqui do blog não te ajudaria :)
      http://www.nanoshots.com.br/2018/01/nginx-configurando-proxy-reverso-para.html

      Excluir