Personalizarea Paginilor de Eroare și Directiva proxy_intercept_errors în Nginx

Blocuri de bază Standard Nginx

Ghid complet pentru personalizarea paginilor de eroare în Nginx: mascarea erorilor brute ale serverelor de backend cu proxy_intercept_errors, servirea paginilor HTML statice pentru 404, 500, 502 Bad Gateway și 503 Service Unavailable.

Sintaxă
error_page 404 /404.html; error_page 502 503 /50x.html; proxy_intercept_errors on;

Paginile standard de eroare Nginx (fond alb, text negru „502 Bad Gateway” și versiunea serverului expusă în subsol) oferă o experiență neplăcută utilizatorilor și dezvăluie detalii tehnice atacatorilor. Directiva error_page permite maparea codurilor de stare HTTP către pagini de design personalizate, iar proxy_intercept_errors garantează că Nginx interceptează și maschează erorile interne aruncate de aplicațiile backend (Node.js, Python, PHP-FPM).

Configurația completă pentru pagini elegante de eroare
server {
    listen 80;
    server_name www.dexblog.ro;
    root /var/www/html;

    # Ascundem numărul versiunii Nginx din toate erorile și antetele:
    server_tokens off;

    # Maparea erorilor 4xx și 5xx:
    error_page 404 /custom_404.html;
    error_page 500 502 503 504 /custom_50x.html;

    # Interceptează erorile returnate de serverul proxy backend:
    proxy_intercept_errors on;
    # Interceptează erorile returnate de PHP-FPM:
    fastcgi_intercept_errors on;

    # Locația fișierelor statice de eroare (marcate 'internal' pentru a nu fi accesate direct):
    location = /custom_404.html {
        root /var/www/error_pages;
        internal;
    }

    location = /custom_50x.html {
        root /var/www/error_pages;
        internal;
    }
}
Directiva internal: Adăugarea directivei internal; în blocul de locație garantează că vizitatorii nu pot accesa direct URL-ul https://dexblog.ro/custom_50x.html din browser. Pagina va fi afișată strict atunci când Nginx declanșează intern codul de eroare respectiv.