Create Custom 404 / 403 error page in Nginx


To totally unlock this section you need to Log-in


Login

How do we create a custom static HTTP 404 or HTTP 403 error page under nginx web server?

First create 404.html in your document root. The default is location is /usr/local/nginx/html/ or /var/www/html/. So create a HTML file as follows:

# vi /usr/local/nginx/html/404.html

Sample outputs:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Error 404 Not Found
<style>
<!--
	body {font-family: arial,sans-serif}
	img { border:none; }
//-->
</style>
</head>
<body>
<blockquote>
	<h2>Error 404 Not Found</h2>
	<p>Our apologies for the temporary inconvenience. The requested URL was not found on this server.  We suggest you try one of the links below:
	<ul>
		  <li><b>Verify url and typos</b> - The web page you were attempting to view may not exist or may have moved - try <em>checking the web address for typos</em>.</li>
		  <li><b>E-mail us</b> - If you followed a link from somewhere, please let us know at <a href="mailto:[email protected]">[email protected]</a>. Tell us where you came from and what you were looking for, and we'll do our best to fix it.</li>
	</ul>
</blockquote>
</body>
</html>

Edit /usr/local/nginx/conf/nginx.conf file, enter:

# vi /usr/local/nginx/conf/nginx.conf

Append / edit config as follows:

error_page   404  =  /404.html;

An example to prevent clients fetching error pages directly:

error_page 404 /404.html;
location  /404.html {
  internal;
}

An example of HTTP 403 error page:

error_page 403 /403.html;
       location = /403.html {
           root   html;
           allow all;
       }

Save and close the file. Reload nginx, enter:

# /usr/local/nginx/sbin/nginx -t && /usr/local/nginx/sbin/nginx -s reload

Or just use the service command:

sudo service nginx stop
sudo service nginx start