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




