106 lines
4.2 KiB
Plaintext
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;
|
|
}
|
|
}
|