Tutorial de Ubuntu 26.04 / Configure sites Nginx e teste o roteamento por Host

Gerencie sites Nginx no Ubuntu: inspecione a configuração existente e ative um arquivo em sites-available por meio de um link em sites-enabled. Este laboratório vincula dois sites a 127.0.0.1:8080 para que você possa testar o roteamento de Host sem exposição pública.

O novo site de laboratório 8080 é apenas loopback; isso não limita todo o servidor ao acesso local. A instalação do Nginx no Ubuntu pode iniciar seu site padrão. Antes de instalar, confirme as regras de acesso e filtragem do guia de UFW ou use uma VM dedicada isolada de redes externas.

Instale e inspecione a configuração existente

sudo apt update
sudo apt install nginx curl
sudo nginx -t
sudo nginx -T
sudo ss -lntp

Use uma VM dedicada e não interrompa outro servidor web ocupando uma porta. Inspecione includes ativos, diretivas listen, nomes de servidores e servidores padrão em nginx -T. A configuração completa pode conter endereços sensíveis ou detalhes de autenticação; não a publique.

O guia de configuração do Nginx no Ubuntu explica blocos de servidor, raízes de documentos e o site padrão.

Verifique a exposição do site padrão na porta 80

sudo ss -lntp
sudo ufw status verbose
ls -l /etc/nginx/sites-enabled
sudo nginx -T

Endereços em escuta como 0.0.0.0:80 ou [::]:80 diferem de 127.0.0.1:8080. Com UFW inativo ou uma permissão ampla para a porta 80, outro dispositivo pode acessar o site padrão. Verifique as respostas locais separadamente das novas conexões por clientes permitidos e excluídos.

Em uma VM dedicada recém-criada, o bloco a seguir pode preservar e desabilitar apenas o symlink do site padrão do pacote. Não aplique em um site de produção. O comando interrompe a execução se encontrar um link ou destino inesperado, ou se o backup falhar. A validação ocorre depois da remoção do link.

(
set -eu
link=/etc/nginx/sites-enabled/default
if [ ! -L "$link" ] || [ "$(readlink -f "$link")" != /etc/nginx/sites-available/default ]; then
    printf 'Not the expected package-default symlink; inspect manually.\n' >&2
    exit 1
fi
backup_dir=$(sudo mktemp -d /root/nginx-default-link.XXXXXX)
sudo cp -a "$link" "$backup_dir/default"
printf 'Preserved link: %s/default\n' "$backup_dir"
sudo rm -- "$link"
sudo nginx -t
sudo systemctl reload nginx
sudo ss -lntp
)

Se a validação falhar, o link já terá sido removido do disco, mas o recarregamento não terá ocorrido. O arquivo original sites-available/default permanece. Se a porta 80 ainda estiver ativa, investigue outros sites/processos. Restaure o symlink de backup registrado somente depois de verificar se houve alterações no caminho original e, em seguida, valide e recarregue. Preserve as alterações de outros administradores.

O guia de instalação do Nginx no Ubuntu descreve a instalação do pacote e a inicialização do serviço.

Prepare diretórios raiz distintos para os sites

Se esses caminhos ou nomes de configuração já existirem, preserve-os e escolha novos nomes para o laboratório. Em caminhos dedicados e vazios, crie respostas distintas conforme a seguir. Verifique também os diretórios pais e evite alterações simultâneas por outros administradores. O bloco recusa caminhos existentes; se uma etapa posterior falhar, diretórios ou arquivos já criados permanecem e devem ser inspecionados antes da remoção. O Nginx precisa de acesso de leitura, não de conteúdo que possa ser escrito por todos.

(
set -eu
for path in /srv/ubuntu-course-alpha /srv/ubuntu-course-beta; do
    if sudo test -e "$path" || sudo test -L "$path"; then
        printf 'Path already exists: %s; inspect it and choose another name.\n' "$path" >&2
        exit 1
    fi
done
sudo install -d -m 0755 /srv/ubuntu-course-alpha /srv/ubuntu-course-beta
printf '%s\n' 'alpha-site' | sudo sh -c 'set -C; cat > "$1/index.html"' sh /srv/ubuntu-course-alpha
printf '%s\n' 'beta-site' | sudo sh -c 'set -C; cat > "$1/index.html"' sh /srv/ubuntu-course-beta
)

Defina blocos de servidor locais completos

Salve a configuração completa abaixo como o novo arquivo /etc/nginx/sites-available/ubuntu-course-lab. Os nomes .test são para documentação e testes locais, não para DNS público ou emissão de certificados. Preserve qualquer site padrão existente na porta 80 separadamente.

server {
    listen 127.0.0.1:8080 default_server;
    server_name _;
    return 404;
}
server {
    listen 127.0.0.1:8080;
    server_name alpha.example.test;
    root /srv/ubuntu-course-alpha;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}
server {
    listen 127.0.0.1:8080;
    server_name beta.example.test;
    root /srv/ubuntu-course-beta;
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}

A documentação do Nginx explica a seleção por endereço, porta e Host. O primeiro bloco retorna 404 para solicitações de Host não correspondentes neste endereço e porta. O sublinhado não é um mecanismo especial de negação; default_server torna esse bloco a resposta padrão. Evite padrões duplicados no mesmo endereço e porta.

Habilite, valide e recarregue

(
set -eu
sudo ln -s /etc/nginx/sites-available/ubuntu-course-lab /etc/nginx/sites-enabled/ubuntu-course-lab
sudo nginx -t
sudo systemctl reload nginx
)

Se o link simbólico existir, inspecione-o em vez de sobrescrevê-lo. Não recarregue após uma verificação de sintaxe falha; corrija o arquivo, linha ou conflito de listener relatado primeiro. O sucesso da sintaxe não garante acesso correto ao arquivo ou roteamento do Host.

Teste nomes, caminhos e respostas padrão

curl --fail --show-error --resolve alpha.example.test:8080:127.0.0.1 http://alpha.example.test:8080/
curl --fail --show-error --resolve beta.example.test:8080:127.0.0.1 http://beta.example.test:8080/
curl -i -H "Host: unknown.example.test" http://127.0.0.1:8080/

Espere alpha-site e beta-site para as duas primeiras requisições e 404 para a última. --resolve altera o mapeamento de nome/endereço apenas para esta requisição, não o DNS do sistema. Para resultados inesperados, compare includes, nomes duplicados, porta, raiz do documento e logs.

Desative o laboratório removendo apenas seu link simbólico sites-enabled, depois valide e recarregue. Preserve outros sites e arquivos de origem. Uma implantação pública requer domínio, endereço, firewall, HTTPS e preparo de logs separados.