domingo, 21 de maio de 2017

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




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-available/apache-proxy.conf


    server {
        listen       80;
        server_name  localhost;
        access_log  /var/log/nginx/proxy-apache.log;

        location / {
                proxy_pass      http://127.0.0.1:1234;
        }
    }

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 :)

SOBRE O AUTOR

Matheus Fidelis

http://msfidelis.github.io/

Power Ranger, Piloto de Helicópteros e Astronauta da NASA. Analista DevOps e Desenvolvedor Web Backend. Apaixonado por Linux, Arquitetura, API's, Containers, Integração, Código, Testes, Escalabilidade e Cloud. :)

1 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

 
Nanoshots | Open Source Security, Linux e Tutoriais © 2015 - Designed by Templateism.com