Utilizar o NGINX como proxy reverso é uma opção muito popular e re­co­men­dá­vel. Para o con­fi­gu­rar, basta instalar o NGINX, criar um ficheiro de con­fi­gu­ra­ção e ajustar as de­fi­ni­ções do servidor. Por fim, pode verificar se tudo funciona cor­re­ta­mente uti­li­zando o Gunicorn.

Passos para instalar o NGINX como proxy reverso no Ubuntu 22.04

Para dispor de um servidor web seguro, flexível e eficiente na uti­li­za­ção de recursos, é re­co­men­dá­vel utilizar um proxy reverso. Este é colocado entre o cliente e o servidor web, sem que os uti­li­za­do­res se apercebam da sua presença. Uma das melhores opções para gerir todas as so­li­ci­ta­ções recebidas é o NGINX como proxy reverso. A seguir, ex­pli­ca­mos-lhe como instalá-lo e configurá-lo no Ubuntu 22.04.

Re­qui­si­tos para uma ins­ta­la­ção correta

Para instalar um proxy reverso NGINX no Ubuntu 22.04, é ne­ces­sá­rio o seguinte:

  • ter um servidor Ubuntu instalado,
  • o endereço IP ou o domínio Unix do servidor,
  • o domínio do seu servidor,
  • pri­vi­lé­gios de nível sudo para o servidor.

Instalar o NGINX como proxy reverso

Atualize o seu re­po­si­tó­rio através do terminal, como primeiro passo para ter acesso aos pacotes mais recentes. Em seguida, instale o NGINX uti­li­zando o comando apt install. Digite-o da seguinte forma:

$ sudo apt update
$ sudo apt install nginx
bash

Confirme com [Y] e prima [Enter] para aplicar as al­te­ra­ções.

Em seguida, configure o seu firewall para que o NGINX tenha acesso ao seu servidor. Para tal, deve adicionar uma exceção com o seguinte comando:

$ sudo ufw allow 'Nginx HTTP'
bash

Por fim, verifique se a ins­ta­la­ção do NGINX foi realizada cor­re­ta­mente. Este é o código que deve utilizar para o efeito:

$ systemctl status nginx
bash

Se o NGINX tiver sido instalado cor­re­ta­mente, obterá um resultado se­me­lhante a este:

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 um ficheiro de con­fi­gu­ra­ção e per­so­na­li­zar o servidor

Em seguida, configura o teu servidor para preparar cor­re­ta­mente o NGINX Reverse Proxy para o teu sistema. Para tal, abre um novo ficheiro de con­fi­gu­ra­ção com o editor de texto nano. Utiliza o seguinte comando, subs­ti­tuindo «tu_dominio» pelo nome real do teu domínio:

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

Assim que o ficheiro estiver aberto, adicione o seguinte conteúdo. Substitua os mar­ca­do­res «tu_dominio» e «server_adresse» pelo seu domínio e pelo endereço IP ou pelo Unix Domain Socket do seu servidor:

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

Guarde e feche o ficheiro. O conteúdo apre­sen­tado cor­res­ponde à con­fi­gu­ra­ção padrão do NGINX, que utiliza a porta 80 para responder aos pedidos do seu domínio e servidor. A diretiva proxy_pass é fun­da­men­tal para que o NGINX funcione como um proxy reverso. Se ne­ces­sá­rio, também pode con­fi­gu­rar ser­vi­do­res adi­ci­o­nais.

Em seguida, crie um link para o diretório sites-enabled, ao qual o NGINX acede ini­ci­al­mente. Utilize este comando, subs­ti­tuindo novamente o marcador “tu_dominio” pelo nome cor­res­pon­dente:

$ sudo ln -s /etc/nginx/sites-available/ihre_domain/etc/nginx/sites-enabled/
bash

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

$ sudo nginx -t
bash

Se não receber nenhuma mensagem de erro, pode reiniciar o NGINX Reverse Proxy para aplicar todas as al­te­ra­ções. Para tal, introduza o seguinte comando:

$ sudo systemctl restart nginx
bash

Com isto, o NGINX já estará con­fi­gu­rado como proxy reverso. Na secção seguinte, ex­pli­ca­mos como verificar o proxy, mas trata-se de um passo que não é obri­ga­tó­rio para concluir a con­fi­gu­ra­ção.

Verificar o proxy reverso NGINX com o Gunicorn

Para testar o NGINX Reverse Proxy, pode sempre utilizar o seu servidor acedendo-lhe através do shell. Em al­ter­na­tiva, pode utilizar o servidor web HTTP Gunicorn, que se com­ple­menta muito bem com o NGINX Reverse Proxy. Em primeiro lugar, atualize os pacotes e instale o servidor:

$ sudo apt update
$ sudo apt install gunicorn
bash

Em seguida, crie uma função simples que será enviada como resposta HTTP para o seu navegador. Para isso, utilize novamente o nano:

$ nano test.py
bash

Abra o ficheiro e introduza este código:

def app(environ, start_response):
	start_response("200 OK", [])
	return iter([b"Esto es una prueba"])
txt

Guarde e feche o ficheiro. Em seguida, inicie o Gunicorn e aceda ao módulo de teste:

$ gunicorn --worker=2 test:app
bash

O resultado deverá ficar assim:

[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

Assim, o Gunicorn está a interagir com o endereço padrão http://127.0.0.1:8000. No último passo, abra o seu navegador e aceda ao domínio que con­fi­gu­rou com o NGINX. O NGINX Reverse Proxy deverá apre­sen­tar a mensagem «Isto é um teste».

Ir para o menu principal