# Como instalar o NGINX Reverse Proxy no Ubuntu 22.04

Utilizar o NGINX como proxy reverso é uma opção muito popular e recomendável. Para o configurar, basta instalar o NGINX, criar um ficheiro de configuração e ajustar as definições do servidor. Por fim, pode verificar se tudo funciona corretamente utilizando 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 utilização de recursos**, é recomendável utilizar um proxy reverso. Este é colocado entre o cliente e o servidor web, sem que os utilizadores se apercebam da sua presença. Uma das melhores opções para gerir todas as solicitações recebidas é o NGINX como proxy reverso. A seguir, explicamos-lhe como instalá-lo e configurá-lo no Ubuntu 22.04.

Dica No nosso Guia Digital, também pode encontrar artigos sobre a instalação do NGINX no Ubuntu 20.04 e sobre [o que é um servidor proxy](https://www.ionos.com/pt-pt/digitalguide/servidores/know-how/o-que-e-um-servidor-proxy/).

### Requisitos para uma instalação correta

Para instalar um proxy reverso NGINX no Ubuntu 22.04, é necessá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,
- privilégios de nível `sudo` para o servidor.

### Instalar o NGINX como proxy reverso

Atualize o seu repositório através do terminal, como primeiro passo para ter **acesso aos pacotes mais recentes**. Em seguida, instale o NGINX utilizando o comando `apt install`. Digite-o da seguinte forma:

```bash
$ sudo apt update
$ sudo apt install nginx
```

Confirme com \[Y\] e prima \[Enter\] para aplicar as alteraçõ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:

```bash
$ sudo ufw allow 'Nginx HTTP'
```

Por fim, verifique se a instalação do NGINX foi realizada corretamente. Este é o código que deve utilizar para o efeito:

```bash
$ systemctl status nginx
```

Se o NGINX tiver sido instalado corretamente, obterá um resultado semelhante a este:

```bash
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"
```

### Criar um ficheiro de configuração e personalizar o servidor

Em seguida, configura o teu servidor para preparar corretamente o NGINX Reverse Proxy para o teu sistema. Para tal, abre um **novo ficheiro de configuração** com o editor de texto nano. Utiliza o seguinte comando, substituindo «tu\_dominio» pelo nome real do teu domínio:

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

Assim que o ficheiro estiver aberto, adicione o seguinte conteúdo. Substitua os marcadores «tu\_dominio» e «server\_adresse» pelo seu domínio e pelo endereço IP ou pelo Unix Domain Socket do seu servidor:

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

Guarde e feche o ficheiro. O conteúdo apresentado corresponde à **configuração padrão do NGINX**, que utiliza a porta 80 para responder aos pedidos do seu domínio e servidor. A diretiva `proxy_pass` é fundamental para que o NGINX funcione como um proxy reverso. Se necessário, também pode configurar servidores adicionais.

Em seguida, crie um link para o diretório `sites-enabled`, ao qual o NGINX acede inicialmente. Utilize este comando, substituindo novamente o marcador “tu\_dominio” pelo nome correspondente:

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

Verifique se não há erros na configuração:

```bash
$ sudo nginx -t
```

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

```bash
$ sudo systemctl restart nginx
```

Com isto, o NGINX já estará configurado como proxy reverso. Na secção seguinte, explicamos como verificar o proxy, mas trata-se de um passo que não é obrigatório para concluir a configuraçã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 alternativa, pode utilizar o **servidor web HTTP Gunicorn**, que se complementa muito bem com o NGINX Reverse Proxy. Em primeiro lugar, atualize os pacotes e instale o servidor:

```bash
$ sudo apt update
$ sudo apt install gunicorn
```

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

```bash
$ nano test.py
```

Abra o ficheiro e introduza este código:

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

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

```bash
$ gunicorn --worker=2 test:app
```

O resultado deverá ficar assim:

```bash
[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
```

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 configurou com o NGINX. O NGINX Reverse Proxy deverá apresentar a mensagem «Isto é um teste».


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/proxy-reverso-nginx/](https://www.ionos.com/pt-pt/digitalguide/servidores/configuracao/proxy-reverso-nginx/) for AI/LLM consumption.