Nginx + Certbox: direto ao ponto

Apr 23, 2020 3 min leitura
  • Tags:
  • nginx
  • certbot
  • https
  • reverse proxy

Trabalhar em uma equipe sem experiência em DevOps obriga você a gerenciar para fazer as coisas em relação à infraestrutura. Tivemos que instalar e configurar uma instância do RabbitMQ atrás de um Nginx com HTTPS. Esta é uma postagem direta sobre como instalar e configurar o proxy reverso com Let’s Encrypt.

Nginx

Neste tutorial, o Nginx funciona como um proxy reverso, encaminhando solicitações externas da Internet para o serviço interno. Vamos começar.

1. Crie um registro A em seu provedor de DNS:

Type Name Content TTL
A yourwebsite 123.456.78.91 Auto

2. Instale o Nginx e habilite-o:

sudo apt-get install nginx-full
sudo systemctl enable nginx

Gerencie a sua instância do nginx com os comandos abaixo:

sudo systemctl restart nginx
sudo systemctl reload nginx
sudo systemctl status nginx

3. Crie um arquivo de configuração no diretório /etc/nginx/sites-available/. Um bom padrão é nomeá-lo de acordo com o DNS do seu serviço:

/etc/nginx/sites-available/yourwebsite.com

4. Substitua o conteúdo abaixo de acordo com suas necessidades:

server {
  server_name <YOUR-DNS>;
  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;
  location / {
          client_body_buffer_size 128k;
          proxy_send_timeout   90;
          proxy_read_timeout   90;
          proxy_buffer_size    4k;
          proxy_buffers     16 32k;
          proxy_busy_buffers_size 64k;
          proxy_temp_file_write_size 64k;
          proxy_connect_timeout 30s;
          proxy_pass   http://<YOUR-LOCAL>:<PORT>;
          proxy_set_header   Host   $host;
          proxy_set_header   X-Real-IP  $remote_addr;
          proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

5. Crie um link simbólico para o diretório sites-enabled:

sudo ln -s /etc/nginx/sites-available/<your-filename> /etc/nginx/sites-enabled/<your-filename>

6. Carregue a configuração e cheque o status:

sudo systemctl reload nginx
sudo systemctl status nginx

A saída abaixo ilustra que nosso Nginx está funcionando corretamente (dados sensíveis foram omitidos).

 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 Tue 2019-08-13 18:18:09 UTC; 3 months 7 days ago
     Docs: man:nginx(8)
 Main PID: 6027 (nginx)
    Tasks: 5 (limit: 4915)
   CGroup: /system.slice/nginx.service
           ├─5198 nginx: worker process
           ├─5199 nginx: worker process
           ├─5200 nginx: worker process
           ├─5201 nginx: worker process
           └─6027 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;

Aug 13 18:18:09 systemd[1]: Starting A high performance web server and a reverse proxy server...
Aug 13 18:18:09 systemd[1]: Started A high performance web server and a reverse proxy server.
Aug 13 18:53:04 systemd[1]: Reloading A high performance web server and a reverse proxy server.
Aug 13 18:53:04 systemd[1]: Reloaded A high performance web server and a reverse proxy server.
Aug 13 18:58:21 systemd[1]: Reloading A high performance web server and a reverse proxy server.
Aug 13 18:58:21 systemd[1]: Reloaded A high performance web server and a reverse proxy server.

Certbot

Para permitir HTTPs no seu website você precisa ter um certificado de um Autoridade Certificadora (CA - Certificate Authority). Nós podemos usar o Let’s Encrypt e o cliente do Certbot para configurar o ambiente.

1. Instale o Certbot com o plugin do Nginx:

sudo apt-get install python-certbot-nginx

2. Execute o certbot passando seu domínio como parâmetro:

sudo certbot --nginx -d <YOUR-DOMAIN>

3. Garanta que a renovação automática está configurada no cronjob do Linux:

cat /etc/cron.d/certbot

Voilà!

Links

Você pode achar útil os links abaixo:


Comentários