Como instalar o Nginx no Debian 12, 11 ou 10

Nginx é um poderoso servidor web conhecido por seu alto desempenho e baixo consumo de recursos. Originalmente projetado para lidar com o problema do C10k, ele se destaca no fornecimento de conteúdo estático, balanceamento de carga e proxy reverso. A combinação do Nginx com o Debian, conhecido por sua estabilidade e segurança, resulta em um ambiente de servidor robusto e confiável.

Principais recursos do Nginx:

  • Alta performance: Lida com eficiência com múltiplas conexões simultâneas.
  • Baixo uso de recursos: Otimizado para funcionar com memória e CPU mínimas.
  • Balanceamento de carga: Distribui o tráfego entre vários servidores para melhorar o desempenho.
  • Proxy reverso: Encaminha solicitações de clientes para servidores back-end sem problemas.
  • Tratamento de conteúdo estático: Serve arquivos estáticos de forma rápida e eficiente.
  • Recursos de segurança: Suporta SSL/TLS para comunicações criptografadas.
  • Flexibilidade: Suporta protocolos como HTTP, HTTPS, SMTP, POP3 e IMAP.

Benefícios de combinar Nginx com Debian:

  • Estabilidade: A reputação de estabilidade do Debian garante que seu servidor permaneça confiável.
  • Segurança: As robustas medidas de segurança do Debian protegem seu servidor Nginx contra vulnerabilidades.
  • Fácil de usar: O sistema de gerenciamento de pacotes do Debian simplifica a instalação e manutenção do Nginx.
  • Suporte da comunidade: Nginx e Debian têm comunidades fortes que fornecem amplos recursos e suporte.

Fazendo a transição para a configuração, você descobrirá que a estabilidade do Debian combina perfeitamente com a eficiência do Nginx, criando um ambiente ideal para suas aplicações web. Vamos nos aprofundar nas etapas necessárias para instalar e configurar o Nginx em um servidor Debian.

Preparando seu sistema antes da instalação do Nginx

Certifique-se de que seu sistema esteja atualizado antes de instalar o Nginx. Isto evita potenciais conflitos durante a instalação e reduz o risco de problemas de compatibilidade e vulnerabilidades de segurança.

Para atualizar os pacotes do sistema, execute o seguinte:

sudo apt update && sudo apt upgrade

Este comando busca a lista de atualizações disponíveis (via apt update) e, em seguida, atualiza os pacotes de software atuais para suas versões mais recentes (usando apt upgrade).

Instale o padrão NGINX 'Web Server'

Por padrão, o NGINX está disponível nos repositórios Debian. Isso torna o processo de instalação simples.

Execute o seguinte comando para instalar o nginx:

sudo apt install nginx

O apt install comando diz ao utilitário de manipulação de pacotes APT (uma parte do sistema Debian) para instalar o pacote NGINX.

Opcional: instale a versão completa do NGINX

NGINX oferece um nginx-full versão com módulos adicionais não encontrados na versão padrão. Se você precisar de mais funcionalidades, instale a versão completa do nginx:

sudo apt install nginx-full

Opcional: instale a versão NGINX-Extras

Para um conjunto de recursos ainda mais amplo, considere o nginx-extras versão. Para instalar:

sudo apt install nginx-extras

Verificando a instalação do NGINX

Após a instalação, certifique-se de que o NGINX esteja funcionando corretamente.

Verifique o status do serviço NGINX com o seguinte:

systemctl status nginx

O NGINX funciona corretamente se a saída mostrar “ativo (em execução)”. Caso contrário, a saída detalhará o erro para solução de problemas.

Se o NGINX não estiver habilitado, use:

sudo systemctl enable nginx --now

Configurar firewall UFW para Nginx

UFW, ou Uncomplicated Firewall, fornece uma interface fácil de usar para gerenciar regras de firewall iptables. Ele não está instalado no Debian por padrão, mas você pode obtê-lo nos repositórios padrão. Se o seu servidor tiver acesso público, você deverá configurar regras UFW para segurança.

Instale o Firewall UFW

Se o UFW ainda não estiver instalado no seu sistema, você pode fazer isso executando o seguinte comando:

sudo apt install ufw

Habilitar Firewall UFW

Assim que a instalação for concluída, você pode habilitar o UFW executando o seguinte comando:

sudo ufw enable

As configurações padrão do UFW bloqueiam todas as conexões de entrada e permitem todas as conexões de saída. Isso significa que ele interrompe o acesso não solicitado ao sistema, mas permite que seu sistema alcance o mundo exterior.

Listando aplicativos instalados

O UFW usa perfis de aplicação, que são conjuntos de regras para aplicações específicas. Para ver os aplicativos instalados que possuem perfis UFW, execute:

sudo ufw app list

Configurando regras UFW para NGINX

Dependendo das suas necessidades, você pode configurar o UFW para permitir conexões NGINX por meio de HTTP (Porta 80), HTTPS (Porta 443) ou ambos.

Somente para HTTP (porta 80):

sudo ufw allow 'Nginx HTTP'

Somente HTTPS (porta 443):

sudo ufw allow 'Nginx HTTPS'

HTTP e HTTPS:

sudo ufw allow 'Nginx Full'

Verificando regras de firewall

Para confirmar se suas regras estão em vigor, verifique as regras de firewall ativas:

sudo ufw status

Testando a configuração do NGINX

Depois de configurar o UFW, certifique-se de ver a página inicial do NGINX. No seu navegador, acesse o endereço IP do seu servidor:

http://your_server_ip

Ou, para configurações locais:

http://localhost

Suponha que você veja a página padrão do NGINX; sua configuração funciona. Isso encerra a configuração do firewall para NGINX no Debian.

Crie blocos de servidor NGINX

Assim como os hosts virtuais do Apache, os blocos de servidor NGINX permitem hospedar vários domínios de um servidor. Cada domínio tem suas definições de configuração. Para este guia, substitua “example.com” pelo seu nome de domínio real.

Crie um diretório para o seu domínio

Configure um diretório para o seu domínio. Este diretório armazenará os arquivos do seu site:

sudo mkdir -p /var/www/example.com/

Atribuir propriedade ao diretório Nginx

Atribua a propriedade do diretório ao usuário e grupo “www-data”, que o NGINX normalmente usa:

sudo chown -R www-data:www-data /var/www/example.com/

Crie uma página HTML de teste Nginx

Crie uma página HTML de teste no diretório do seu domínio para confirmar a configuração do NGINX:

sudo nano /var/www/example.com/index.html

Adicione o seguinte código HTML:

<html>
 <head>
  <title>Welcome to Example.com</title>
 </head>
 <body>
   <h1>Success! The NGINX server block is working!</h1>
 </body>
</html>

Depois de colar o código no editor nano, pressione CTRL+O para salvar as alterações e depois CTRL+X para sair do editor.

Crie um bloco de servidor NGINX para página de teste

Configure um bloco de servidor para o seu site:

sudo nano /etc/nginx/sites-available/example.com.conf

Adicione a seguinte configuração:

server {
 listen 80;
 listen [::]:80;

 root /var/www/example.com/;
 index index.html index.htm index.nginx-debian.html;

 server_name example.com www.example.com;

 location / {
  try_files $uri $uri/ =404;
 }
}

Esta configuração diz ao NGINX para escutar conexões de entrada na porta 80 para ambos example.com e www.example.com. Certifique-se de substituir o root diretiva com o caminho do diretório que você criou anteriormente.

Habilite o bloco de servidor NGINX via link simbólico

Habilite seu bloco de servidor criando um link simbólico do diretório de sites disponíveis para o diretório habilitado para sites:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/

Configuração final e execução de teste

Por fim, editaremos o arquivo de configuração padrão do NGINX e realizaremos um teste para garantir que tudo funcione conforme o esperado.

Editando o arquivo de configuração NGINX

Abra o nginx.conf arquivo:

sudo nano /etc/nginx/nginx.conf

Procure a linha server_names_hash_bucket_size 64; dentro do http {} bloqueie e descomente.

Esta diretiva permite que o NGINX lide com nomes de domínio longos e números mais significativos de nomes de servidores, alocando mais memória para essa finalidade. No entanto, tome cuidado para não definir esse valor muito alto, pois isso poderá consumir mais memória do que o necessário.

Salve as alterações e saia do editor pressionando CTRL+O e CTRL+X.

Teste sua configuração NGINX

Antes de prosseguir e reiniciar o NGINX, é uma boa prática verificar se a sintaxe de sua configuração está correta. Execute o seguinte comando para iniciar uma execução de teste:

sudo nginx -t

Se sua configuração estiver correta, você verá esta saída:

nginx: a sintaxe do arquivo de configuração /etc/nginx/nginx.conf está ok nginx: o teste do arquivo de configuração /etc/nginx/nginx.conf foi bem-sucedido

Essas mensagens indicam que sua configuração do NGINX foi validada com êxito.

Verificando seu bloco de servidor

Para garantir que o bloqueio do seu servidor funcione corretamente, abra o seu domínio em um navegador da web. Você deverá ver a página de teste confirmando que o bloco do seu servidor está ativo.

Comandos adicionais do Nginx

Aprimorando a segurança de arquivos em seu servidor web

A segurança dos arquivos e pastas do seu servidor web é fundamental. Evite direitos de acesso excessivamente permissivos. Use estes comandos para definir as permissões corretas para todos os arquivos e diretórios em seu webroot.

Lembre-se de substituir /var/www/example.com/ com seu caminho webroot:

sudo find /var/www/example.com/ -type d -exec chmod 755 "{}" \;
sudo find /var/www/example.com/ -type f -exec chmod 644 "{}" \;

Esses comandos definem permissões de leitura e execução para diretórios e permissões de leitura e gravação de arquivos para o proprietário. Grupos e outros têm acesso somente leitura. Ajuste essas permissões conforme a demanda do seu aplicativo.

Segurança Nginx com certificado SSL gratuito Let's Encrypt

O uso do protocolo HTTPS garante a segurança do servidor web. Let's Encrypt fornece um certificado SSL gratuito. Instale o pacote certbot com:

sudo apt install python3-certbot-nginx

Em seguida, inicie a criação do certificado:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email you@example.com -d www.example.com

Substitua pelo seu e-mail e nome de domínio. Este comando configura HTTPS com os recursos de segurança necessários.

Configurando a renovação automática de certificado

Vamos criptografar os certificados com duração de 90 dias. Configure renovações automáticas com o script Certbot. Teste o processo:

sudo certbot renew --dry-run

Se tiver sucesso, adicione o comando de renovação ao crontab:

sudo crontab -e

Inclua esta linha para renovar diariamente à meia-noite:

00 00 */1 * * /usr/sbin/certbot-auto renew

Registros do servidor Nginx

Monitore os logs do seu servidor para obter um servidor web bem mantido. Por padrão, os logs residem em /var/log/nginx. Liste-os com:

cd /var/log/nginx && ls -l

Os arquivos de log mais relevantes são os access.log e error.log. Para monitorar logs em tempo real, use o tail -f comando seguido do caminho para o log:

tail -f /var/log/nginx/access.log

Atualizar Nginx

Antes de atualizar seu servidor Nginx, é aconselhável criar um backup de suas configurações atuais. Para fazer backup do seu principal nginx.conf arquivo, use o seguinte comando:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx-backup.conf

Nos casos em que você personalizou extensivamente a configuração do Nginx, convém fazer backup de todo o diretório Nginx:

sudo cp -r /etc/nginx/ /etc/nginx-bkup

Com o backup seguro de suas configurações, agora você pode prosseguir com a atualização do Nginx:

sudo apt update
sudo apt upgrade

Fazer backup regularmente de suas configurações é uma boa prática, especialmente em configurações complexas.

Remover Nginx

Se você não precisar mais do Nginx em seu servidor, poderá removê-lo seguindo estas etapas. Primeiro, certifique-se de que o serviço Nginx esteja interrompido:

sudo systemctl disable nginx --now

Em seguida, remova completamente o pacote Nginx:

sudo apt remove nginx

Você ainda pode encontrar resquícios de configurações do Nginx no /etc/nginx diretório. Para removê-los, use o comando:

sudo rm -R /etc/nginx/

Lembre-se de que isso removerá todos os seus arquivos de configuração personalizados, portanto, certifique-se de ter feito backup de tudo o que precisa antes de prosseguir com esta etapa.

Configurar parâmetros de rotação de log no Nginx

O Nginx inclui um recurso de rotação diária de log por padrão. No entanto, você pode personalizar essas configurações com base nas suas necessidades.

Acessar arquivo de configuração para rotação de log

Para modificar as configurações de rotação de log, você precisa acessar o arquivo de configuração. Veja como você pode abri-lo usando o editor de texto nano:

sudo nano /etc/nginx/logrotate.d/nginx

Depois de abrir o arquivo, você verá um conteúdo semelhante ao seguinte. Ajuste as diretivas neste arquivo para atender às suas necessidades de retenção e rotação de log, principalmente se você usar ferramentas de monitoramento como fail2ban.

Exemplo de arquivo de configuração de rotação de log

/var/log/nginx/*.log {
  daily
  missingok
  rotate 14
  compress
  delaycompress
  notifempty
  create 0640 www-data adm
  sharedscripts
  prerotate
  if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
  run-parts /etc/logrotate.d/httpd-prerotate; \
  fi \
  endscript
  postrotate
  invoke-rc.d nginx rotate >/dev/null 2>&1
  endscript
}

Compreendendo os parâmetros de configuração primária

Dentro desta configuração, os administradores de sistema normalmente se concentram em duas configurações principais:

  1. Diário: esta configuração define a frequência de rotação do log. Embora o padrão seja ‘diário’, você pode alterá-lo para ‘semanalmente’ ou ‘mensalmente’. No entanto, as rotações diárias normalmente simplificam o gerenciamento de logs.
  2. Girar 14: Este número informa ao sistema quantos arquivos de log devem ser mantidos. Por exemplo, uma configuração de '14' retém os 14 registros mais recentes. Se você quiser armazenar apenas registros de uma semana, ajuste esse número para '7'.

Embora o Nginx permita modificar outras configurações, sempre faça alterações com cuidado. Alterar as configurações sem compreender seu impacto pode causar resultados inesperados. Certifique-se de modificar essas configurações para atender às suas necessidades, sem causar problemas indesejados.

Lembre-se de que não existe uma abordagem única para o gerenciamento de logs. Sempre avalie seu ambiente e requisitos específicos antes de fazer alterações.

Considerações finais

Neste guia, explicamos como configurar o Nginx no Debian, abordando instalação, configuração e otimização básica. Ao combinar a eficiência do Nginx com a estabilidade do Debian, você criou uma base sólida para o seu servidor web. Lembre-se de manter seu servidor atualizado e explorar módulos Nginx adicionais para obter funcionalidades aprimoradas. Se você tiver algum problema, as comunidades fortes em torno do Debian e do Nginx são sempre ótimos recursos. Obrigado por acompanhar e boa hospedagem!

Joshua James
Me siga
Últimos posts por Joshua James (exibir todos)

Deixe um comentário