# Tutorial: Como configurar o NGINX reverse proxy no Ubuntu 22.04

A utilizaçã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 configuração e ajustar as definições do servidor. Você também pode fazer um teste usando o Gunicorn para verificar se a configuração foi bem-sucedida.

## Como configurar NGINX reverse proxy

Um proxy reverso ou *reverse proxy* ajuda a aumentar a **segurança, flexibilidade e disponibilidade de recursos**. Ele fica posicionado entre o *client* e o servidor do Ubuntu e não é detectado pelos usuários. O NGINX reverse proxy é uma solução bastante recomendada para atender às solicitações recebidas. A seguir, explicaremos como fazer sua instalação e configuraçã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](https://www.ionos.com/pt-br/digitalguide/servidor/conhecimento/o-que-e-um-proxy-server/ "O que é servidor proxy").

### Requisitos de sistema para NGINX reverse proxy

Para configurar o NGINX reverse proxy no Ubuntu 22.04, você precisa de:

- Um servidor Ubuntu configurado
- O endereço IP do servidor ou soquete de domínio Unix
- O domínio do seu servidor
- Privilégios `sudo` para o servidor

### Instalar NGINX reverse proxy

Primeiro, atualize o seu repositó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 atualização e a instalação:

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

Pressione \[Y\] para confirmar e \[Enter\] para aplicar as configurações.

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

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

Em seguida, verifique se a instalação foi bem-sucedida:

```bash
$ systemctl status nginx
```

Se o NGINX foi instalado corretamente, você receberá uma mensagem como esta:

```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 arquivo de configuraçã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 configuração** usando o editor de texto Nano. Insira o comando a seguir, substituindo o placeholder “seu\_dominio” pelo nome do seu domínio:

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

Após abrir o arquivo, adicione o código a seguir. Substitua os placeholders “seu\_dominio” e “endereco\_servidor” pelo domínio e IP ou soquete de domínio Unix do seu servidor:

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

Salve e feche o arquivo. O conteúdo acima é a **configuração padrão do NGINX**. Ela usa a porta 80 para responder às solicitações do seu domínio e servidor. `proxy_pass` é um componente essencial na função do NGINX reverse proxy. Você também pode configurar servidores adicionais, se necessário.

Em seguida, crie um link para o diretório `sites-enabled`, que é acessado inicialmente pelo NGINX. Use este comando, substituindo o placeholder “seu\_dominio”:

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

Verifique se há erros de configuração:

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

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

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

Pronto! Você terminou de configurar o NGINX reverse proxy. Na próxima seção, explicaremos como verificar o funcionamento 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 alternativa é usar o **servidor web HTTP Gunicorn**, que funciona muito bem com o NGINX reverse proxy. Primeiro, faça a atualização dos pacotes e instale o servidor:

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

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:

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

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

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

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

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

O resultado será similar a este:

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

Essa é a confirmação de que o Gunicorn está interagindo com o endereço `http://127.0.0.1:8000`. Para finalizar, **abra seu navegador** e acesse o domínio que você configurou com o NGINX. O NGINX reverse proxy exibirá a mensagem “Novo teste”.


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/nginx-reverse-proxy-no-ubuntu/](https://www.ionos.com/pt-br/digitalguide/servidor/configuracao/nginx-reverse-proxy-no-ubuntu/) for AI/LLM consumption.