NGINX:在Linux或Unix上创建自定义404/403错误页面

时间:2020-01-09 10:40:33  来源:igfitidea点击:

如何在Linux或类Unix系统上运行的Nginx Web服务器下创建自定义静态HTTP 404或HTTP 403错误页面?

Nginx是一个免费的开源Web服务器。
它还充当反向代理,缓存和负载平衡器服务器。
本教程展示了"如何配置Nginx在Linux或类Unix系统上为404/403使用自定义错误页面。
"

如何配置Nginx使用自定义404错误页面

首先在文档根目录中创建404.html。
默认位置是/usr/local/nginx/html /或/var/www/htm /。
因此,如下创建HTML文件:

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

或者

# vi /var/www/html/404.html

输出示例:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>Error 404 Not Found</title>
<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>

如何配置Nginx将我的404.html文件用作错误页面

编辑/usr/local/nginx/conf/nginx.conf文件,执行:

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

或者

# vi /etc/nginx/sites-available/default

追加/编辑配置,如下所示:

error_page   404  =  /404.html;

防止客户端直接获取错误页面的示例:

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

HTTP 403错误页面的示例:

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

error_page只能放在http,server和location指令中。
保存并关闭文件。
重新加载Nginx服务器,执行:

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

或者

# nginx -t && nginx -s reload

或者

$ sudo systemctl reload nginx

这是我的网站在访问时出现的示例错误页面(您的域/404dfoo):
Nginx中的示例自定义错误404页面

如何重定向到特定的URL进行错误处理?

是的,URL重定向可以进行错误处理,如下所示:

#
# Redirect to forbidden.php for HTTP status code 403
#
error_page 403      https://www.theitroad.local/error/forbidden.php;
 
#
# Redirect to notfound.pl for HTTP status code 404 
# with redirect status codes to 301
#
error_page 404 =301 https://www.theitroad.local/cgi-bin/notfound.pl;

常见错误代码列表

  • HTTP 404:在此服务器上找不到网页。
  • HTTP 403服务器被配置为拒绝访问您的请求。通常,使用此方法会阻止登录URL,例如/wp-admin /或/phpmysqladmin /。
  • HTTP 500/502/503/504内部服务器问题,例如配置服务器未命中或后端关闭。