# Ficheiro: /etc/nginx/sites-available/default-catchall.conf # # Bloco "catch-all" (padrão) otimizado para servir múltiplas páginas de erro HTML personalizadas. # Responde a acessos diretos ao IP ou a hostnames não configurados. # # --- EXPLICAÇÃO DAS DIRETIVAS --- # # 1. DIRETIVAS DE ESCUTA (listen): # - Mantidas como no original, escutando nas portas 80 e 443 (HTTP e HTTPS) # - A opção "default_server" marca este bloco como o padrão para qualquer requisição # que não corresponda a outro bloco "server" definido. # # 2. DIRETIVAS SSL (ssl_*): # - Mantidas para usar o certificado "snakeoil" auto-assinado para HTTPS. # # 3. NOME DO SERVIDOR (server_name): # - "server_name _;" é um nome especial que captura qualquer hostname que não # tenha sido explicitamente definido em outros ficheiros de configuração. # # 4. GESTÃO DE LOGS (access_log, log_not_found): # - Mantido como "off" para evitar poluir os ficheiros de log com requisições # indesejadas que caem neste bloco. # # 5. DIRETÓRIO RAIZ (root): # - Define o diretório base onde os seus ficheiros HTML de erro estarão localizados. # - Ex: /var/www/html/errors # # 6. MAPEAMENTO DE ERROS (error_page): # - Esta é a diretiva principal para esta configuração. Ela mapeia um ou mais # códigos de status HTTP para uma URI interna. # - Ex: "error_page 404 /404.html;" instrui o NGINX que, ao encontrar um erro 404, # ele deve fazer uma requisição interna para "/404.html". # - Agrupamos todos os erros 5xx (500, 502, 503, 504) para uma única página # genérica de erro de servidor (50x.html), uma prática comum e eficiente. # # 7. BLOCOS DE LOCALIZAÇÃO INTERNA (location = /.html): # - Criamos um bloco "location" para cada ficheiro de erro. # - O sinal de igual ("=") garante uma correspondência exata e rápida da URI. # - A diretiva "internal" é crucial para a segurança: ela especifica que estes # ficheiros só podem ser acedidos através de requisições internas do NGINX # (geradas pela diretiva "error_page"), e não por um pedido direto do cliente # no navegador (ex: http://seu-ip/404.html retornará um erro). # # 8. AÇÃO PADRÃO (location /): # - Este bloco captura todas as requisições que chegam a este servidor. # - Em vez de servir um HTML embutido, agora simplesmente retornamos um código "404 Not Found". # - Este "return 404;" aciona a diretiva "error_page 404 ...", que por sua vez # serve o conteúdo do seu ficheiro /404.html personalizado. É uma forma limpa # e semanticamente correta de lidar com um recurso que não existe. server { # --- Bloco 1: Configurações de Escuta e Servidor Padrão --- listen 80 default_server; listen [::]:80 default_server; listen 8080 default_server; listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; # --- Bloco 2: Configurações de SSL --- ssl_certificate /etc/ssl/certs/ssl-cert-snakeoil.pem; ssl_certificate_key /etc/ssl/private/ssl-cert-snakeoil.key; # --- Bloco 3: Nome do Servidor --- server_name _; # --- Bloco 4: Gestão de Logs --- access_log off; log_not_found off; # --- Bloco 5: Diretório Raiz para os Ficheiros de Erro --- root /var/www/html/errors; # --- Bloco 6: Mapeamento de Códigos de Erro para Páginas Personalizadas --- location = /nginx_status { stub_status; # --- Segurança (removi a linha duplicada para limpeza) --- allow 127.0.0.1; # Acesso local (localhost) allow 172.16.254.1; # Permite o próprio servidor / Zabbix deny all; # Bloqueia todos os outros } error_page 403 /403.html; error_page 404 /404.html; error_page 500 502 503 504 /50x.html; # --- Bloco 7: Lógica para Servir as Páginas de Erro de Forma Segura --- location = /403.html { internal; } location = /404.html { internal; } location = /50x.html { internal; } # --- Bloco 8: Ação Padrão para Todas as Requisições --- # Retorna 404 para qualquer URI, o que aciona a regra "error_page" correspondente. location / { return 404; } }