Instalando e Configurando Nginx no CentOS 7: Um Guia Completo Passo a Passo
Nginx é um dos servidores web open-source mais poderosos e amplamente adotados do mundo. Conhecido pelo seu desempenho excepcional, baixo consumo de memória e capacidade de lidar com milhares de conexões simultâneas, Nginx é a solução ideal para servir conteúdo estático, atuar como proxy reverso e realizar balanceamento de carga em sistemas distribuídos.
Quer esteja a executar um blog pessoal, uma plataforma de e-commerce de alto tráfego ou uma arquitetura complexa de microsserviços, Nginx oferece a velocidade e confiabilidade que os seus utilizadores exigem. Este guia abrangente orienta-o em cada etapa da instalação, configuração, segurança e otimização do Nginx num servidor CentOS 7 — desde a preparação inicial do sistema até à ativação de HTTPS com um certificado SSL Let's Encrypt gratuito.
> Pré-requisitos: Um servidor CentOS 7 com acesso root ou sudo. Se precisar de um ambiente confiável e de alto desempenho para acompanhar, considere explorar Alojamento VPS da AlexHost — construído especificamente para cargas de trabalho exigentes com acesso root completo e armazenamento SSD.
Passo 1: Atualizar o Seu Sistema
Antes de instalar qualquer novo software, é crítico garantir que o seu sistema CentOS 7 está totalmente atualizado. Pacotes desatualizados podem introduzir vulnerabilidades de segurança e conflitos de dependências que complicam o processo de instalação.
Abra o seu terminal e execute o seguinte comando:
sudo yum update -yEste comando atualiza todos os pacotes instalados para as suas versões mais recentes disponíveis. A flag -y confirma automaticamente todas as solicitações, tornando o processo não interativo. Permita que a atualização seja concluída totalmente antes de prosseguir.
Passo 2: Instalar Nginx via YUM
Nginx não está disponível nos repositórios base padrão do CentOS 7. Você deve primeiro instalar o repositório EPEL (Extra Packages for Enterprise Linux), que fornece uma ampla gama de pacotes de software adicionais para distribuições baseadas em RHEL.
Instalar o repositório EPEL:
sudo yum install epel-release -yInstalar Nginx:
sudo yum install nginx -yEste comando baixa e instala Nginx junto com todas as dependências necessárias. Após a conclusão da instalação, você pode verificar a versão instalada com:
nginx -vVocê deve ver uma saída semelhante a:
nginx version: nginx/1.20.xPasso 3: Iniciar e Ativar o Serviço Nginx
Com o Nginx instalado, você precisa iniciar o serviço e configurá-lo para ser iniciado automaticamente sempre que o servidor reiniciar.
Inicie o serviço Nginx:
sudo systemctl start nginxAtive o Nginx para iniciar no boot:
sudo systemctl enable nginxVerifique o status do serviço para confirmar que está em execução:
sudo systemctl status nginxVocê deve ver uma saída indicando que o serviço está ativo (em execução):
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; ...)
Active: active (running) since ...Se o serviço falhar ao iniciar, revise os logs de erro em /var/log/nginx/error.log para obter informações de diagnóstico.
Passo 4: Configurar a Firewall
CentOS 7 usa firewalld como sua ferramenta padrão de gerenciamento de firewall. Por padrão, o tráfego HTTP (porta 80) e HTTPS (porta 443) são bloqueados. Você deve abrir explicitamente essas portas para permitir que o tráfego web chegue ao seu servidor Nginx.
Permitir tráfego HTTP:
sudo firewall-cmd --permanent --add-service=httpPermitir tráfego HTTPS:
sudo firewall-cmd --permanent --add-service=httpsRecarregar a firewall para aplicar as alterações:
sudo firewall-cmd --reloadVerificar as regras ativas:
sudo firewall-cmd --list-allVocê deve ver tanto http quanto https listados na seção services da saída. Se o seu servidor estiver hospedado atrás de uma firewall externa ou grupo de segurança (comum com provedores de nuvem), certifique-se de que essas regras também sejam atualizadas para permitir tráfego nas portas 80 e 443.
Passo 5: Verificar a Instalação
Para confirmar que o Nginx está instalado corretamente e servindo conteúdo, abra um navegador web e navegue até o endereço IP público do seu servidor:
http://your_server_ipVocê deve ser saudado pela página de boas-vindas padrão do Nginx, que exibe a mensagem *"Welcome to nginx!"*. Isto confirma que o servidor web está operacional e acessível a partir da internet.
Se não vir a página de boas-vindas, verifique novamente o seguinte:
- O serviço Nginx está em execução (
sudo systemctl status nginx) - As regras de firewall estão corretamente aplicadas
- O endereço IP do seu servidor está correto
- Nenhum outro serviço (como Apache) está ocupando a porta 80
Passo 6: Configurar Blocos de Servidor Nginx
Nginx usa blocos de servidor (funcionalmente equivalentes aos hosts virtuais do Apache) para definir como ele lida com solicitações de diferentes domínios ou subdomínios. Cada bloco de servidor é normalmente armazenado como um arquivo de configuração separado dentro do diretório /etc/nginx/conf.d/.
O arquivo de configuração principal do Nginx está localizado em /etc/nginx/nginx.conf. Ele inclui uma diretiva que carrega automaticamente todos os arquivos .conf do diretório conf.d, mantendo sua configuração modular e fácil de gerenciar.
Passo 6a: Criar um Novo Arquivo de Configuração de Bloco de Servidor
Crie um novo arquivo de configuração para seu domínio. Substitua example.com pelo nome do seu domínio real:
sudo nano /etc/nginx/conf.d/example.com.confAdicione a seguinte configuração de bloco de servidor:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm index.php;
# Logging
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
location / {
try_files $uri $uri/ =404;
}
# Deny access to hidden files
location ~ /. {
deny all;
}
}Diretivas principais explicadas:
| Diretiva | Descrição |
|---|---|
listen 80 | Instrui o Nginx a escutar conexões recebidas na porta 80 (HTTP) |
server_name | Define os nomes de domínio aos quais este bloco de servidor responde |
root | Especifica o diretório raiz do documento onde os arquivos do site são armazenados |
index | Define os arquivos padrão que o Nginx servirá quando um diretório for solicitado |
try_files | Tenta servir o URI solicitado como um arquivo, depois como um diretório, e retorna um 404 se nenhum existir |
access_log / error_log | Define arquivos de log separados para este host virtual para depuração mais fácil |
Salve o arquivo e saia do editor (Ctrl+X, depois Y, depois Enter no nano).
Passo 7: Criar a Raiz do Documento e Ficheiro de Teste
Crie o diretório raiz do documento que definiu na configuração do bloco do servidor:
sudo mkdir -p /var/www/example.com/htmlCrie um ficheiro index.html simples para verificar se o bloco do servidor está a funcionar corretamente:
echo "<h1>Welcome to Example.com — Powered by Nginx on CentOS 7!</h1>" | sudo tee /var/www/example.com/html/index.htmlDefina a propriedade e as permissões corretas para que o Nginx possa ler os ficheiros:
sudo chown -R nginx:nginx /var/www/example.com/
sudo chmod -R 755 /var/www/example.com/> Nota sobre SELinux: CentOS 7 é fornecido com SELinux ativado por padrão. Se o Nginx não conseguir ler os seus ficheiros web mesmo com permissões corretas, poderá ter de aplicar o contexto SELinux apropriado:
> “`bash
> sudo chcon -Rt httpd_sys_content_t /var/www/example.com/
> “`
Passo 8: Testar a Configuração do Nginx
Antes de reiniciar o Nginx para aplicar sua nova configuração, sempre teste erros de sintaxe. Um arquivo mal configurado pode derrubar todo o seu servidor web.
Execute o teste de configuração:
sudo nginx -tUm teste bem-sucedido produz a seguinte saída:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSe erros forem reportados, revise cuidadosamente os números de linha indicados nos seus arquivos de configuração e corrija qualquer problema antes de prosseguir.
Reinicie o Nginx para aplicar as alterações:
sudo systemctl restart nginxAlternativamente, se quiser recarregar a configuração sem desconectar conexões ativas (recomendado para ambientes de produção), use:
sudo systemctl reload nginxAgora navegue até seu domínio em um navegador. Você deverá ver sua página index.html personalizada.
Passo 9: Configurar HTTPS com Let’s Encrypt
Executar um website em HTTP simples expõe seus utilizadores a potenciais escutas e ataques man-in-the-middle. Proteger seu site com HTTPS não é mais opcional — é um requisito fundamental para confiança do utilizador, integridade de dados e classificação em motores de busca.
Let’s Encrypt fornece certificados SSL/TLS gratuitos, automatizados e confiáveis. Você também pode explorar Certificados SSL premium da AlexHost para validação estendida e opções validadas por organização que oferecem níveis mais elevados de confiança para websites comerciais.
Instalar Certbot e o Plugin Nginx
sudo yum install certbot python2-certbot-nginx -yObter e Instalar o Certificado SSL
Execute Certbot com o plugin --nginx, que modifica automaticamente sua configuração Nginx para ativar HTTPS:
sudo certbot --nginx -d example.com -d www.example.comSiga os prompts interativos:
- Introduza seu endereço de email para notificações de renovação
- Concorde com os Termos de Serviço do Let’s Encrypt
- Escolha se deseja redirecionar o tráfego HTTP para HTTPS (fortemente recomendado — selecione a opção 2)
Certbot irá automaticamente:
- Obter um certificado assinado do Let’s Encrypt
- Modificar sua
/etc/nginx/conf.d/example.com.confpara incluir diretivas SSL - Configurar um redirecionamento HTTP-para-HTTPS
Após a conclusão, verifique a configuração HTTPS visitando:
https://example.comSeu navegador deve exibir um ícone de cadeado, confirmando que a conexão está encriptada.
Passo 10: Automatizar a Renovação de Certificados
Os certificados Let's Encrypt são válidos por 90 dias. Não renová-los antes do vencimento fará com que o seu site exiba avisos de segurança aos visitantes, impactando severamente a confiança do utilizador e o tráfego.
Testar o Processo de Renovação
Antes de configurar a automatização, verifique se o processo de renovação funciona corretamente:
sudo certbot renew --dry-runUma execução de teste bem-sucedida confirma que a renovação automática funcionará sem problemas.
Configurar uma Tarefa Cron para Renovação Automática
Abra o crontab raiz:
sudo crontab -eAdicione a seguinte linha para verificar e renovar certificados duas vezes por dia (a frequência recomendada):
0 0,12 * * * /usr/bin/certbot renew --quiet --post-hook "systemctl reload nginx"Explicação do agendamento cron:
0 0,12 * * * — Executa à meia-noite e ao meio-dia todos os dias
--quiet — Suprime a saída, a menos que ocorra um erro
--post-hook "systemctl reload nginx" — Recarrega Nginx após uma renovação bem-sucedida para aplicar o novo certificado sem tempo de inatividade
Guarde e saia do editor de crontab. Os seus certificados SSL serão agora renovados automaticamente, mantendo o seu site seguro sem qualquer intervenção manual.
Dicas de Otimização de Desempenho para Nginx no CentOS 7
Após concluir a configuração básica, considere estes aprimoramentos de configuração para maximizar o desempenho do Nginx:
Ativar Compressão Gzip
Adicione o seguinte ao seu nginx.conf dentro do bloco http {} para reduzir o tamanho das respostas enviadas aos clientes:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_proxied expired no-cache no-store private auth;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/xml+rss application/json;
Configurar Cache do Navegador
Adicione cabeçalhos cache-control para ativos estáticos para reduzir a carga do servidor e melhorar os tempos de carregamento da página:
location ~* .(jpg|jpeg|png|gif|ico|css|js|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
Ajustar Processos de Trabalho
Em /etc/nginx/nginx.conf, defina o número de processos de trabalho para corresponder à contagem de núcleos de CPU do seu servidor:
worker_processes auto;
worker_connections 1024;
> Para aplicações que usam muitos recursos ou sites com alto tráfego, considere fazer upgrade para Servidores Dedicados da AlexHost, que fornecem recursos garantidos de CPU, RAM e armazenamento sem efeitos de vizinhos barulhentos.
Gerenciar Múltiplos Websites com Nginx
Uma das maiores forças do Nginx é sua capacidade de hospedar múltiplos websites em um único servidor através de blocos de servidor. Para cada domínio adicional, simplesmente:
Crie um novo .conf arquivo em /etc/nginx/conf.d/server_name únicaroot para a raiz de documento apropriadasudo nginx -t e sudo systemctl reload nginxSe preferir uma interface gráfica para gerenciar seu servidor web, hosts virtuais, bancos de dados e contas de email, considere VPS com cPanel — uma solução de painel de controle totalmente gerenciada que simplifica a administração do servidor sem sacrificar a flexibilidade.
Alternativamente, explore a gama completa de Painéis de Controle VPS disponíveis da AlexHost, incluindo Plesk, DirectAdmin e outras opções adequadas a diferentes fluxos de trabalho e preferências técnicas.
Resolução de Problemas Comuns do Nginx no CentOS 7
| Problema | Causa Provável | Solução | |
|---|---|---|---|
| Nginx falha ao iniciar | Porta 80/443 já em uso | Execute `sudo ss -tlnp | grep :80` para identificar o processo conflitante |
| Erro 403 Forbidden | Permissões de ficheiro incorretas ou contexto SELinux | Verifique chmod/chown e aplique chcon para SELinux | |
| 502 Bad Gateway | Backend upstream (PHP-FPM, Node.js) não está em execução | Verifique se o serviço backend está ativo e se o socket/porta está correto | |
| Certificado SSL não renova | Certbot não consegue vincular-se à porta 80 | Certifique-se de que a porta 80 está aberta e nenhum outro processo a está bloqueando | |
| As alterações não têm efeito | Configuração não recarregada | Execute sudo systemctl reload nginx após cada alteração de configuração |
Conclusão
Instalou, configurou e protegeu com sucesso o Nginx no CentOS 7. O seu servidor está pronto para alojar websites com alto desempenho, processar conexões simultâneas de forma eficiente e servir conteúdo através de conexões HTTPS encriptadas — todas qualidades essenciais para um ambiente web moderno e de nível produção.
Aqui está um resumo do que foi realizado:
- ✅ Atualizou o sistema CentOS 7 e instalou Nginx através do repositório EPEL
- ✅ Iniciou e ativou o serviço Nginx para arranque automático no boot
- ✅ Configurou firewalld para permitir tráfego HTTP e HTTPS
- ✅ Criou e configurou um bloco de servidor personalizado para um domínio
- ✅ Definiu permissões de ficheiro corretas e contextos SELinux para a raiz do documento
- ✅ Testou a configuração para erros de sintaxe antes de aplicar alterações
- ✅ Protegeu o site com um certificado SSL Let's Encrypt gratuito via Certbot
- ✅ Automatizou a renovação de certificados com uma tarefa cron
Manter um servidor web seguro e de alto desempenho requer atenção contínua. Mantenha o Nginx atualizado regularmente, monitorize os seus registos de acesso e erro, e reveja a sua configuração conforme os requisitos do seu site evoluem.
Se está à procura de uma base de alojamento robusta para os seus projetos com Nginx, a AlexHost oferece um espectro completo de soluções — desde Alojamento Web Partilhado de nível inicial para sites mais pequenos até VPS de alto desempenho e infraestrutura dedicada para aplicações exigentes. Cada plano é apoiado por hardware de nível empresarial, suporte técnico 24/7 e um compromisso com o tempo de atividade e segurança.
em todos os serviços de alojamento