Nginx - Customizing 404 page Nginx - Customizing 404 page nginx nginx

Nginx - Customizing 404 page


You can setup a custom error page for every location block in your nginx.conf, or a global error page for the site as a whole.

To redirect to a simple 404 not found page for a specific location:

location /my_blog {    error_page    404 /blog_article_not_found.html;}

A site wide 404 page:

server {    listen 80;    error_page  404  /website_page_not_found.html;    ...

You can append standard error codes together to have a single page for several types of errors:

location /my_blog {    error_page 500 502 503 504 /server_error.html}

To redirect to a totally different server, assuming you had an upstream server named server2 defined in your http section:

upstream server2 {    server 10.0.0.1:80;}server {    location /my_blog {        error_page    404 @try_server2;    }    location @try_server2 {        proxy_pass http://server2;    }

The manual can give you more details, or you can search google for the terms nginx.conf and error_page for real life examples on the web.


You use the error_page property in the nginx config.

For example, if you intend to set the 404 error page to /404.html, use

error_page 404 /404.html;

Setting the 500 error page to /500.html is just as easy as:

error_page 500 /500.html;


Be careful with the syntax! Great Turtle used them interchangeably, but:

error_page 404 = /404.html;

Will return the 404.html page with a status code of 200 (because = has relayed that to this page)

error_page 404 /404.html;

Will return the 404.html page with a (the original) 404 error code.

https://serverfault.com/questions/295789/nginx-return-correct-headers-with-custom-error-documents