NgixProxy_Pathfinder/nginx/sites-available/default-catchall.conf

106 lines
4.2 KiB
Plaintext

# 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 = /<ficheiro>.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;
}
}