15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar
30.10.2024
1 +1

Sites-Enabled e Sites-Available: Guia Completo para NGINX e Apache

NGINX e Apache continuam sendo os dois servidores web mais dominantes na internet — e com razão. Ambos são testados em batalha, altamente configuráveis e capazes de servir sites complexos e de alto tráfego com facilidade. Um dos conceitos mais importantes para qualquer administrador de sistema gerenciando um servidor baseado em Linux é entender como esses servidores web lidam com a configuração de sites através da estrutura de diretórios sites-available e sites-enabled.

Quer você esteja executando um único site ou gerenciando dezenas de hosts virtuais em um plano de VPS Hosting, dominar este modelo de configuração lhe dará controle preciso sobre quais sites estão ativos, quais estão em fase de testes e como seus recursos de servidor são alocados.

Este guia fornece um passo a passo abrangente de como ativar, desativar e gerenciar sites usando NGINX e Apache em sistemas Linux.

Entendendo sites-available e sites-enabled

Tanto NGINX quanto Apache usam um modelo de dois diretórios para separar a configuração do site da ativação do site. Este padrão arquitetônico é elegante em sua simplicidade e extremamente poderoso na prática.

sites-available

O diretório /etc/nginx/sites-available/ ou /etc/apache2/sites-available/ atua como uma biblioteca de todas as configurações de site possíveis. Cada site que você pretende hospedar no servidor obtém seu próprio arquivo de configuração armazenado aqui. Crucialmente, os arquivos neste diretório não estão ativos — eles definem a configuração mas não servem nenhum tráfego até serem explicitamente ativados.

sites-enabled

O diretório /etc/nginx/sites-enabled/ ou /etc/apache2/sites-enabled/ contém links simbólicos apontando para arquivos de configuração em sites-available. Apenas sites com um symlink ativo neste diretório são carregados pelo servidor web e servidos aos visitantes.

Esta separação oferece várias vantagens principais:

  • Desativação não destrutiva: Você pode desativar um site sem deletar sua configuração.
  • Implantação rápida: Preparar um novo site é tão simples quanto criar um symlink.
  • Organização limpa: Todas as configurações existem em um único lugar, independentemente de estarem ativas.

Gerenciando Sites com Apache

1. Configuração de Virtual Hosts do Apache

Apache usa Virtual Hosts para servir múltiplos sites a partir de uma única instância de servidor. Cada site obtém seu próprio arquivo de configuração que diz ao Apache como lidar com requisições recebidas para esse domínio — incluindo a raiz do documento, caminhos de logging, aliases de servidor e muito mais.

Os arquivos de configuração para virtual hosts do Apache são armazenados em:

/etc/apache2/sites-available/

#### Criando um Arquivo de Configuração de Virtual Host

Para criar um arquivo de configuração para um site chamado test.oo.md, execute:

sudo nano /etc/apache2/sites-available/test.oo.md.conf

Dentro do arquivo, defina seu bloco de virtual host:

<VirtualHost *:80>
    ServerAdmin admin@test.oo.md
    ServerName your_domain_or_IP
    ServerAlias www.test.oo.md
    DocumentRoot /var/www/test.oo.md

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

> Nota: Substitua your_domain_or_IP pelo seu nome de domínio real ou endereço IP do servidor. A diretiva ServerAlias permite que Apache responda também ao subdomínio www.

Salve e saia do arquivo quando terminar.

2. Ativar o Site com a2ensite

Uma vez que o arquivo de configuração está em vigor, ative o site usando o comando a2ensite (Apache 2 Enable Site):

sudo a2ensite test.oo.md.conf

Este comando cria automaticamente um link simbólico de sites-available para sites-enabled:

/etc/apache2/sites-enabled/test.oo.md.conf -> /etc/apache2/sites-available/test.oo.md.conf

O site agora está pronto para ser servido, mas as mudanças não terão efeito até que Apache seja recarregado.

3. Testar a Configuração do Apache

Antes de recarregar Apache, sempre valide sua sintaxe de configuração para detectar erros:

sudo apachectl configtest

Uma saída bem-sucedida mostrará:

Syntax OK

Se houver erros, Apache descreverá o problema e o número da linha — corrija-os antes de prosseguir.

4. Recarregar Apache para Aplicar Mudanças

sudo systemctl reload apache2

Usar reload em vez de restart é preferido em ambientes de produção porque aplica a nova configuração sem descartar conexões ativas.

5. Desativar um Site com a2dissite

Para tirar um site do ar sem deletar sua configuração, use o comando a2dissite:

sudo a2dissite test.oo.md.conf

Isto remove o link simbólico de sites-enabled. O arquivo de configuração em sites-available permanece intocado. Recarregue Apache para aplicar:

sudo systemctl reload apache2

Gerenciando Sites com NGINX

1. Configuração de Server Block do NGINX

NGINX usa Server Blocks — o equivalente funcional dos Virtual Hosts do Apache. Os arquivos de configuração de server block são armazenados em:

/etc/nginx/sites-available/

#### Criando um Arquivo de Configuração de Server Block

Para criar um arquivo de configuração para test.oo.md, execute:

sudo nano /etc/nginx/sites-available/test.oo.md

Defina seu server block dentro do arquivo:

server {
    listen 80;
    server_name test.oo.md www.test.oo.md;

    root /var/www/test.oo.md;
    index index.html index.htm;

    access_log /var/log/nginx/test.oo.md_access.log;
    error_log  /var/log/nginx/test.oo.md_error.log;

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

> Diretivas principais explicadas:

> – listen 80 — Instrui NGINX a ouvir tráfego HTTP na porta 80.

> – server_name — Define quais nomes de domínio este bloco responde.

> – root — Define o diretório raiz do documento para os arquivos do site.

> – try_files — Tenta servir o arquivo ou diretório solicitado; retorna 404 se não encontrado.

Diferentemente do Apache, NGINX não fornece um comando integrado como a2ensite. Em vez disso, você cria manualmente o link simbólico:

sudo ln -s /etc/nginx/sites-available/test.oo.md /etc/nginx/sites-enabled/

Isto vincula o arquivo de configuração ao diretório sites-enabled, tornando-o elegível para ser carregado pelo NGINX.

3. Testar a Configuração do NGINX

Sempre teste sua configuração NGINX antes de recarregar:

sudo nginx -t

Um teste bem-sucedido retorna:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Se erros forem relatados, revise as linhas indicadas em seu arquivo de configuração e corrija-os antes de prosseguir.

4. Recarregar NGINX para Aplicar Mudanças

sudo systemctl reload nginx

Como com Apache, reload aplica graciosamente mudanças de configuração sem interromper conexões ativas — sempre preferido sobre um restart completo em ambientes ao vivo.

5. Desativar um Site em NGINX

Para desativar um site, remova seu link simbólico do diretório sites-enabled:

sudo rm /etc/nginx/sites-enabled/test.oo.md

Então recarregue NGINX para aplicar a mudança:

sudo systemctl reload nginx

O arquivo de configuração em sites-available é preservado e pode ser reativado a qualquer momento.

Referência Rápida: Gerenciamento de Sites Apache vs. NGINX

TarefaComando ApacheComando NGINX
Criar arquivo de configuraçãonano /etc/apache2/sites-available/site.confnano /etc/nginx/sites-available/site
Ativar sitesudo a2ensite site.confsudo ln -s /etc/nginx/sites-available/site /etc/nginx/sites-enabled/
Testar configuraçãosudo apachectl configtestsudo nginx -t
Recarregar servidor websudo systemctl reload apache2sudo systemctl reload nginx
Desativar sitesudo a2dissite site.confsudo rm /etc/nginx/sites-enabled/site

Melhores Práticas para Gerenciar Sites com NGINX e Apache

1. Um Arquivo de Configuração Por Site

Sempre crie um arquivo de configuração dedicado para cada domínio ou subdomínio no diretório sites-available. Misturar múltiplos sites em um único arquivo cria dores de cabeça de manutenção e torna a resolução de problemas significativamente mais difícil.

2. Sempre Teste Antes de Recarregar

Faça um hábito inegociável executar apachectl configtest ou nginx -t antes de cada recarga. Um erro de sintaxe em um arquivo de configuração pode derrubar todos os sites no servidor — não apenas o que você está editando.

3. Use Controle de Versão para Arquivos de Configuração

Para servidores hospedando múltiplos sites ou configurações complexas, rastreie seus arquivos de configuração com Git:

cd /etc/nginx/sites-available/
git init
git add .
git commit -m "Initial configuration snapshot"

Isto lhe dá um histórico completo de mudanças e a capacidade de reverter para um estado conhecido-bom instantaneamente.

4. Sempre Aplique HTTPS com Certificados SSL

Servir sites sobre HTTP simples não é mais aceitável. Configure Certificados SSL para cada site que você gerencia. Let’s Encrypt fornece certificados gratuitos e auto-renováveis e se integra perfeitamente com Apache (via mod_ssl e Certbot) e NGINX.

Após obter um certificado, atualize seu server block ou virtual host para ouvir na porta 443 e redirecione todo tráfego HTTP para HTTPS.

5. Configure Logging Abrangente

Sempre defina as diretivas access_log e error_log para cada site. Logs são sua primeira linha de defesa ao diagnosticar problemas, investigar incidentes de segurança ou analisar padrões de tráfego. Armazene logs em arquivos específicos do site em vez de confiar no log global padrão.

6. Use Nomenclatura de Arquivo Descritiva e Consistente

Nomeie seus arquivos de configuração após o domínio que servem (por exemplo, example.com.conf para Apache, example.com para NGINX). Isto torna imediatamente óbvio qual arquivo corresponde a qual site ao gerenciar um servidor com muitos hosts virtuais.

Escolhendo o Ambiente de Hospedagem Certo

As técnicas de configuração cobertas neste guia se aplicam independentemente de sua configuração de hospedagem, mas sua escolha de ambiente de servidor impacta significativamente o desempenho e a flexibilidade.

  • Hospedagem Web Compartilhada — Ideal para iniciantes ou sites pequenos onde a configuração do servidor é gerenciada para você. NGINX ou Apache é pré-configurado e você interage com sites através de um painel de controle.
  • Hospedagem VPS — O ponto ideal para desenvolvedores e administradores de sistema que precisam de acesso root completo para configurar NGINX ou Apache exatamente como descrito neste guia. Você tem controle completo sobre sites-available, sites-enabled e todos os outros aspectos do servidor.
  • Servidores Dedicados — Melhor para sites de alto tráfego ou aplicações que requerem máximo desempenho e isolamento. Você gerencia o servidor inteiro, incluindo configuração de servidor web, sem compartilhamento de recursos.
  • VPS com cPanel — Combina o poder de um VPS com um painel de controle gráfico, tornando o gerenciamento de host virtual acessível sem expertise profunda de linha de comando.

Conclusão

A estrutura de diretórios sites-available e sites-enabled é um dos padrões mais práticos e elegantes na administração de servidor web Linux. Ela dá aos administradores de sistema a capacidade de gerenciar dezenas de sites em um único servidor com precisão — ativando, desativando e modificando sites sem nunca arriscar a perda de uma configuração.

Para resumir os principais pontos:

  • sites-available armazena todos os arquivos de configuração; sites-enabled
15%

Poupe 15% em todos os serviços

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código:

Skills
Começar a trabalhar