Hvordan lage tilpasset 404-feilside i NGINX
Hver gang NGINX støter på en feil når den prøver å behandle en klients forespørsel, returnerer den en feil. Hver feil inkluderer en HTTP-svarkode og en kort beskrivelse. Feilen vises vanligvis til en bruker via en enkel standard HTML-side.
Heldigvis kan du konfigurere NGINX til å vise tilpassede feilsider til brukerne av nettstedet eller nettapplikasjonen. Dette kan oppnås ved å bruke NGINXs error_page direktiv som brukes til å definere URI som skal vises for en spesifisert feil. Du kan også, valgfritt, bruke den til å endre HTTP-statuskoden i svarhodene som sendes til en klient.
I denne veiledningen vil vi vise hvordan du konfigurerer NGINX til å bruke egendefinerte feilsider.
Opprett en enkelt tilpasset side for alle NGINX-feil
Du kan konfigurere NGINX til å bruke en enkelt egendefinert feilside for alle feil som den returnerer til en klient. Start med å lage feilsiden din. Her er et eksempel, en enkel HTML-side som viser meldingen:
“Sorry, the page can't be loaded! Contact the site's administrator or support for assistance.” to a client.
Eksempel HTML Nginx egendefinert sidekode.
<!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>
Lagre filen med et passende navn, for eksempel error-page.html, og lukk den.
Deretter flytter du filen til dokumentrotkatalogen (/var/www/html/). Hvis katalogen ikke eksisterer, kan du opprette den ved å bruke mkdir-kommandoen, som vist:
sudo mkdir -p /var/www/html/
sudo cp error-page.html /var/www/html/
Konfigurer deretter NGINX til å bruke den egendefinerte feilsiden ved å bruke error_page-direktivet. Opprett en konfigurasjonsfil kalt custom-error-page.conf under /etc/nginx/snippets/ som vist.
sudo mkdir /etc/nginx/snippets/
sudo vim /etc/nginx/snippets/custom-error-page.conf
Legg til følgende linjer:
error_page 404 403 500 503 /error-page.html;
location = /error-page.html {
root /var/www/html;
internal;
}
Denne konfigurasjonen forårsaker en intern omdirigering til URI/error-page.html hver gang NGINX støter på noen av de spesifiserte HTTP-feilene 404, 403, 500 og 503. posisjon-konteksten forteller NGINX hvor du finner feilsiden din.
Lagre filen og lukk den.
Ta med filen i http-konteksten slik at alle serverblokker bruker feilsiden, i /etc/nginx/nginx.conf-filen:
sudo vim /etc/nginx/nginx.conf
include-katalogen forteller NGINX å inkludere konfigurasjonen i den angitte .conf
-filen:
include snippets/custom-error-page.conf;
Alternativt kan du inkludere filen for en bestemt serverblokk (ofte kjent som vhost), for eksempel /etc/nginx/conf.d/mywebsite. konf. Legg til inkluder-direktivet ovenfor i serverkonteksten {}
.
Lagre NGINX-konfigurasjonsfilen og last inn tjenesten på nytt som følger:
sudo systemctl reload nginx.service
Og test fra en nettleser om oppsettet fungerer bra.
Lag forskjellige tilpassede sider for hver NGINX-feil
Du kan også sette opp forskjellige egendefinerte feilsider for hver HTTP-feil i NGINX. Vi oppdaget en god samling av egendefinerte nginx-feilsider laget av Denys Vitali på Github.
For å sette opp depotet på serveren din, kjør følgende kommandoer:
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
Deretter legger du til følgende konfigurasjon enten i http-konteksten eller hver serverblokk/vhost:
include snippets/error_pages.conf;
Lagre NGINX-konfigurasjonsfilen og last inn tjenesten på nytt som følger:
sudo systemctl reload nginx.service
Test også fra en nettleser om konfigurasjonen fungerer etter hensikten. I dette eksemplet testet vi 404-feilsiden.
Det er alt vi hadde for deg i denne guiden. NGINXs error_page-direktiv lar deg omdirigere brukere til en definert side eller ressurs eller URL når en feil oppstår. Den tillater også valgfritt modifikasjon av HTTP-statuskoden i svaret til en klient. For mer informasjon, les nginx-feilsidedokumentasjonen.