在Apache和nginx中实现自定义错误页面 – 使用ErrorDocument和error_page
从Apache HTTP或Nginx获得默认产品错误页面并不好看,它会暴露版本信息,导致信息泄露 vulnerability。
如果您还没有为您的Web应用程序实现自定义错误页面,那么您必须考虑出于许多原因进行自定义,包括以下原因。
- 品牌 – 显示定制消息与您的 brand logo 和几行消息,以使访问者意识到问题,并链接到相关团队进行联系。
- 漏洞 – 如果您正在处理PCI DSS合规环境,则必须考虑修复信息泄露漏洞,该漏洞存在于默认产品错误页面中。
- 更好的用户界面 – 这完全是关于更好的用户体验,您也可以在错误页面上提供。例如-如果用户请求的内容不存在,那么Web服务器将提供404默认错误页面,而用户很可能会关闭会话。如果有一个自定义页面,用户可以在其中搜索或显示相关项目和适当的导航,那会怎么样?
听起来不错吧?
好吧,我确信通过这种方式,您将保留访问者继续访问网站并改善跳出率。
还没有被说服?
让我们来看看…
这是Nginx的默认“404未找到”页面
当您看到此页面时,您会怎么做?
很可能,您会关闭它。
这是我实施的自定义“404”页面。
看起来好多了吧?
很可能,您要么会转到“首页”,要么会点击下面显示的搜索项之一。这就是自定义页面的帮助。
现在您知道了优势,现在是时候实施它们了。您可以在许多 HTTP status code 事件中拥有自定义页面。我认为以下是必不可少的。
- 404-未找到
- 403-禁止
- 500-内部服务器错误
- 503-服务不可用
- 504-网关超时
先决条件
我假设您已经构建了自定义页面。如果您需要一些404图像,可以从 Elements 获取。
在Apache HTTP中实施
有多种方法可以做到这一点。例如-您可以使用Rewrite或ErrorDocument指令来完成此操作。我将解释如何使用ErrorDocument指令来完成此操作。
- 登录到Apache HTTP服务器
- 转到您拥有httpd.conf文件的apache conf文件夹
- 备份httpd.conf文件
- 修改httpd.conf并添加以下内容
ErrorDocument
ErrorDocument 404 /path/of/custom/error/file
ErrorDocument 403 /path/of/custom/error/file
ErrorDocument 500 /path/of/custom/error/file
ErrorDocument 503 /path/of/custom/error/file
ErrorDocument 504 /path/of/custom/error/file
保存httpd.conf
并重新启动Apache服务器
尝试访问不存在的内容,您应该看到一个自定义错误页面,而不是默认页面。
注意:在这些HTTP状态返回代码事件中,您还可以重定向到其他URL。要进行重定向,只需在每个代码旁边添加一个URL,如下所示。
ErrorDocument 404 https://yaoweibin.cn/errorpage
ErrorDocument 403 https://yaoweibin.cn/errorpage
ErrorDocument 500 https://yaoweibin.cn/errorpage
ErrorDocument 503 https://yaoweibin.cn/errorpage
ErrorDocument 504 https://yaoweibin.cn/errorpage
在Nginx中实施
- 登录到Nginx服务器
- 转到nginx.conf文件位置
- 像往常一样备份conf文件,并在http块下添加以下内容
error_page 404 /path/of/custom/error/file;
error_page 403 /path/of/custom/error/file;
error_page 500 /path/of/custom/error/file;
error_page 503 /path/of/custom/error/file;
error_page 504 /path/of/custom/error/file;
保存文件并重新启动Nginx以使其生效。
结论
你看,这个小小的改变可能会带来巨大的影响,那么为什么不去实施呢?