A uti­li­za­ção do NGINX reverse proxy é uma opção bastante popular. Para configurá-la, tudo o que você precisa fazer é instalar o NGINX, criar um arquivo de con­fi­gu­ra­ção e ajustar as de­fi­ni­ções do servidor. Você também pode fazer um teste usando o Gunicorn para verificar se a con­fi­gu­ra­ção foi bem-sucedida.

Como con­fi­gu­rar NGINX reverse proxy

Um proxy reverso ou reverse proxy ajuda a aumentar a segurança, fle­xi­bi­li­dade e dis­po­ni­bi­li­dade de recursos. Ele fica po­si­ci­o­nado entre o client e o servidor do Ubuntu e não é detectado pelos usuários. O NGINX reverse proxy é uma solução bastante re­co­men­dada para atender às so­li­ci­ta­ções recebidas. A seguir, ex­pli­ca­re­mos como fazer sua ins­ta­la­ção e con­fi­gu­ra­ção no Ubuntu 22.04.

Dica

Também temos este tutorial que mostra como instalar o NGINX no Ubuntu 20.04. Você também pode entender melhor do que se trata um servidor proxy.

Re­qui­si­tos de sistema para NGINX reverse proxy

Para con­fi­gu­rar o NGINX reverse proxy no Ubuntu 22.04, você precisa de:

  • Um servidor Ubuntu con­fi­gu­rado
  • O endereço IP do servidor ou soquete de domínio Unix
  • O domínio do seu servidor
  • Pri­vi­lé­gios sudo para o servidor

Instalar NGINX reverse proxy

Primeiro, atualize o seu re­po­si­tó­rio usando o terminal para obter acesso aos pacotes mais recentes. Em seguida, instale o NGINX usando o comando apt install. Este é o código para realizar a atu­a­li­za­ção e a ins­ta­la­ção:

$ sudo apt update
$ sudo apt install nginx
bash

Pressione [Y] para confirmar e [Enter] para aplicar as con­fi­gu­ra­ções.

Depois, configure seu firewall para que o NGINX possa acessar seu servidor. Use o comando a seguir para adicionar uma exceção:

$ sudo ufw allow 'Nginx HTTP'
bash

Em seguida, verifique se a ins­ta­la­ção foi bem-sucedida:

$ systemctl status nginx
bash

Se o NGINX foi instalado cor­re­ta­mente, você receberá uma mensagem como esta:

nginx.service - A high performance web server and a reverse proxy server
      Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
      Active: active (running) since Mon 2024-06-24 06:52:46 UTC; 39min ago
         Docs: man:nginx(8)
    Main PID: 9919 (nginx)
        Tasks: 2 (limit: 2327)
      Memory: 2.9M
          CPU: 50ms
      CGroup: /system.slice/nginx.service
                 ├─9919 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
                 └─9920 "nginx: worker process"
bash

Criar arquivo de con­fi­gu­ra­ção e adaptar servidor

Agora, configure seu server block para preparar o NGINX reverse proxy para seu sistema. Para fazer isso, crie e acesse um novo arquivo de con­fi­gu­ra­ção usando o editor de texto Nano. Insira o comando a seguir, subs­ti­tuindo o pla­cehol­der “seu_dominio” pelo nome do seu domínio:

$ sudo nano /etc/nginx/sites-available/seu_dominio
bash

Após abrir o arquivo, adicione o código a seguir. Substitua os pla­cehol­ders “seu_dominio” e “endereco_servidor” pelo domínio e IP ou soquete de domínio Unix do seu servidor:

server {
    listen 80;
    listen [::]:80;
    server_name seu_dominio www.seu_dominio;
        
    location / {
        proxy_pass http://endereco_servidor;
        include /etc/nginx/proxy_params;
    }
}
txt

Salve e feche o arquivo. O conteúdo acima é a con­fi­gu­ra­ção padrão do NGINX. Ela usa a porta 80 para responder às so­li­ci­ta­ções do seu domínio e servidor. proxy_pass é um com­po­nente essencial na função do NGINX reverse proxy. Você também pode con­fi­gu­rar ser­vi­do­res adi­ci­o­nais, se ne­ces­sá­rio.

Em seguida, crie um link para o diretório sites-enabled, que é acessado ini­ci­al­mente pelo NGINX. Use este comando, subs­ti­tuindo o pla­cehol­der “seu_dominio”:

$ sudo ln -s /etc/nginx/sites-enabled/seu_dominio, não /etc/nginx/sites-enabled/
bash

Verifique se há erros de con­fi­gu­ra­ção:

$ sudo nginx -t
bash

Se você não receber nenhuma mensagem de erro, reinicie o NGINX reverse proxy para aplicar as con­fi­gu­ra­ções. Para fazer isso, insira o seguinte comando:

$ sudo systemctl restart nginx
bash

Pronto! Você terminou de con­fi­gu­rar o NGINX reverse proxy. Na próxima seção, ex­pli­ca­re­mos como verificar o fun­ci­o­na­mento do proxy com um teste opcional.

Verificar NGINX reverse proxy com Gunicorn

Você pode usar seu próprio servidor se quiser testar seu NGINX reverse proxy. Para fazer isso, abra-o usando o shell. Outra al­ter­na­tiva é usar o servidor web HTTP Gunicorn, que funciona muito bem com o NGINX reverse proxy. Primeiro, faça a atu­a­li­za­ção dos pacotes e instale o servidor:

$ sudo apt update
$ sudo apt install gunicorn
bash

Depois, crie uma função simples que será enviada como resposta HTTP ao seu navegador. Para fazer isso, use o editor Nano mais uma vez:

$ nano test.py
bash

Abra o arquivo e insira o código a seguir:

def app(environ, start_response): 
    start_response("200 OK", []) 
    return iter([b"Novo teste"])
txt

Depois, salve e feche o arquivo. Em seguida, acesse o Gunicorn e abra o módulo de teste:

$ gunicorn --worker=2 test:app
bash

O resultado será similar a este:

[2024-06-24 07:09:29 +0000] [10568] [INFO] Starting gunicorn 20.1.0
[2024-06-24 09:14:37 +0000] [10568] [INFO] Listening at: http://127.0.0.1 (10568)
[2024-06-24 09:14:37 +0000] [10568] [INFO] Using worker: sync
[2024-06-24 09:14:37 +0000] [10569] [INFO] Booting worker with pid: 10569
[2024-06-24 09:14:37 +0000] [10570] [INFO] Booting worker with pid: 10570
bash

Essa é a con­fir­ma­ção de que o Gunicorn está in­te­ra­gindo com o endereço http://127.0.0.1:8000. Para finalizar, abra seu navegador e acesse o domínio que você con­fi­gu­rou com o NGINX. O NGINX reverse proxy exibirá a mensagem “Novo teste”.

Ir para o menu principal