Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Administração Linux

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

Este 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 -y

Instalar Nginx:

sudo yum install nginx -y

Este 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 -v

Você deve ver uma saída semelhante a:

nginx version: nginx/1.20.x

Passo 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 nginx

Ative o Nginx para iniciar no boot:

sudo systemctl enable nginx

Verifique o status do serviço para confirmar que está em execução:

sudo systemctl status nginx

Você 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=http

Permitir tráfego HTTPS:

sudo firewall-cmd --permanent --add-service=https

Recarregar a firewall para aplicar as alterações:

sudo firewall-cmd --reload

Verificar as regras ativas:

sudo firewall-cmd --list-all

Você 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_ip

Você 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.conf

Adicione 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:

DiretivaDescrição
listen 80Instrui o Nginx a escutar conexões recebidas na porta 80 (HTTP)
server_nameDefine os nomes de domínio aos quais este bloco de servidor responde
rootEspecifica o diretório raiz do documento onde os arquivos do site são armazenados
indexDefine os arquivos padrão que o Nginx servirá quando um diretório for solicitado
try_filesTenta servir o URI solicitado como um arquivo, depois como um diretório, e retorna um 404 se nenhum existir
access_log / error_logDefine 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/html

Crie 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.html

Defina 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 -t

Um 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 successful

Se 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 nginx

Alternativamente, se quiser recarregar a configuração sem desconectar conexões ativas (recomendado para ambientes de produção), use:

sudo systemctl reload nginx

Agora 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 -y

Obter 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.com

Siga os prompts interativos:

  1. Introduza seu endereço de email para notificações de renovação
  2. Concorde com os Termos de Serviço do Let’s Encrypt
  3. 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.conf para incluir diretivas SSL
  • Configurar um redirecionamento HTTP-para-HTTPS

Após a conclusão, verifique a configuração HTTPS visitando:

https://example.com

Seu 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-run

Uma 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 -e

Adicione 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/
  • Defina uma diretiva server_name única
  • Aponte a diretiva root para a raiz de documento apropriada
  • Execute sudo nginx -t e sudo systemctl reload nginx
  • Se 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

    ProblemaCausa ProvávelSolução
    Nginx falha ao iniciarPorta 80/443 já em usoExecute `sudo ss -tlnpgrep :80` para identificar o processo conflitante
    Erro 403 ForbiddenPermissões de ficheiro incorretas ou contexto SELinuxVerifique chmod/chown e aplique chcon para SELinux
    502 Bad GatewayBackend upstream (PHP-FPM, Node.js) não está em execuçãoVerifique se o serviço backend está ativo e se o socket/porta está correto
    Certificado SSL não renovaCertbot não consegue vincular-se à porta 80Certifique-se de que a porta 80 está aberta e nenhum outro processo a está bloqueando
    As alterações não têm efeitoConfiguração não recarregadaExecute 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.