Com crear una pàgina d'error 404 personalitzada a NGINX
Cada vegada que NGINX troba un error mentre intenta processar la sol·licitud d'un client, retorna un error. Cada error inclou un codi de resposta HTTP i una breu descripció. L'error normalment es mostra a un usuari mitjançant una pàgina HTML predeterminada senzilla.
Afortunadament, podeu configurar NGINX per mostrar pàgines d'error personalitzades als usuaris del vostre lloc o de l'aplicació web. Això es pot aconseguir mitjançant la directiva error_page de NGINX que s'utilitza per definir l'URI que es mostrarà per a un error especificat. També podeu utilitzar-lo opcionalment per modificar el codi d'estat HTTP a les capçaleres de resposta enviades a un client.
En aquesta guia, mostrarem com configurar NGINX per utilitzar pàgines d'error personalitzades.
Creeu una pàgina personalitzada única per a tots els errors de NGINX
Podeu configurar NGINX perquè utilitzi una única pàgina d'error personalitzada per a tots els errors que retorna a un client. Comenceu creant la vostra pàgina d'error. Aquí teniu un exemple, una pàgina HTML senzilla que mostra el missatge:
“Sorry, the page can't be loaded! Contact the site's administrator or support for assistance.” to a client.
Exemple de codi de pàgina personalitzat HTML de Nginx.
<!DOCTYPE html> <html> <head> <style type=text/css> * { -webkit-box-sizing: border-box; box-sizing: border-box; } body { padding: 0; margin: 0; } #notfound { position: relative; height: 100vh; } #notfound .notfound { position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } .notfound { max-width: 520px; width: 100%; line-height: 1.4; text-align: center; } .notfound .notfound-error { position: relative; height: 200px; margin: 0px auto 20px; z-index: -1; } .notfound .notfound-error h1 { font-family: 'Montserrat', sans-serif; font-size: 200px; font-weight: 300; margin: 0px; color: #211b19; position: absolute; left: 50%; top: 50%; -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); transform: translate(-50%, -50%); } @media only screen and (max-width: 767px) { .notfound .notfound-error h1 { font-size: 148px; } } @media only screen and (max-width: 480px) { .notfound .notfound-error { height: 148px; margin: 0px auto 10px; } .notfound .notfound-error h1 { font-size: 120px; font-weight: 200px; } .notfound .notfound-error h2 { font-size: 30px; } .notfound a { padding: 7px 15px; font-size: 24px; } .h2 { font-size: 148px; } } </style> </head> <body> <div id="notfound"> <div class="notfound"> <h1>Sorry the page can't be loaded!</a></h1> <div class="notfound-error"> <p>Contact the site's administrator or support for assistance.</p> </div> </div> </div> </body> </html>
Deseu el fitxer amb un nom adequat, per exemple error-page.html i tanqueu-lo.
A continuació, moveu el fitxer al directori arrel del document (/var/www/html/). Si el directori no existeix, podeu crear-lo mitjançant l'ordre mkdir, tal com es mostra:
$ sudo mkdir -p /var/www/html/ $ sudo cp error-page.html /var/www/html/
A continuació, configureu NGINX per utilitzar la pàgina d'error personalitzada mitjançant la directiva error_page. Creeu un fitxer de configuració anomenat custom-error-page.conf a /etc/nginx/snippets/ tal com es mostra.
$ sudo mkdir /etc/nginx/snippets/ $ sudo vim /etc/nginx/snippets/custom-error-page.conf
Afegiu-hi les línies següents:
error_page 404 403 500 503 /error-page.html; location = /error-page.html { root /var/www/html; internal; }
Aquesta configuració provoca una redirecció interna a l'URI/error-page.html cada vegada que NGINX troba algun dels errors HTTP especificats 404, 403, 500 i 503. El context d'ubicació indica a NGINX on trobar la pàgina d'error.
Deseu el fitxer i tanqueu-lo.
Ara incloeu el fitxer al context http perquè tots els blocs de servidor utilitzin la pàgina d'error, al fitxer /etc/nginx/nginx.conf:
$ sudo vim /etc/nginx/nginx.conf
El directori d'inclusió indica a NGINX que inclogui la configuració al fitxer .conf
especificat:
include snippets/custom-error-page.conf;
Alternativament, podeu incloure el fitxer d'un bloc de servidor específic (comunament conegut com a vhost), per exemple, /etc/nginx/conf.d/mywebsite.conf. Afegiu la directiva d'inclusió anterior al context del servidor {}
.
Deseu el vostre fitxer de configuració NGINX i torneu a carregar el servei de la següent manera:
$ sudo systemctl reload nginx.service
I proveu des d'un navegador si la configuració funciona bé.
Creeu diferents pàgines personalitzades per a cada error NGINX
També podeu configurar diferents pàgines d'error personalitzades per a cada error HTTP a NGINX. Hem descobert una bona col·lecció de pàgines d'error nginx personalitzades creades per Denys Vitali a Github.
Per configurar el repositori al vostre servidor, executeu les ordres següents:
$ sudo git clone https://github.com/denysvitali/nginx-error-pages /srv/http/default $ sudo mkdir /etc/nginx/snippets/ $ sudo ln -s /srv/http/default/snippets/error_pages.conf /etc/nginx/snippets/error_pages.conf $ sudo ln -s /srv/http/default/snippets/error_pages_content.conf /etc/nginx/snippets/error_pages_content.conf
A continuació, afegiu la configuració següent al vostre context http o a cada bloc de servidor/vhost:
include snippets/error_pages.conf;
Deseu el vostre fitxer de configuració NGINX i torneu a carregar el servei de la següent manera:
$ sudo systemctl reload nginx.service
A més, proveu des d'un navegador si la configuració funciona com s'ha previst. En aquest exemple, hem provat la pàgina d'error 404.
Això és tot el que teníem per a tu en aquesta guia. La directiva error_page de NGINX us permet redirigir els usuaris a una pàgina o recurs o URL definits quan es produeix un error. També permet, opcionalment, la modificació del codi d'estat HTTP en la resposta a un client. Per obtenir més informació, llegiu la documentació de la pàgina d'error de nginx.