简介
Nginx 是一种高性能的 Web 服务器,能够以灵活和强大的方式提供内容。在设计网页时,自定义用户将看到的每条内容通常很有帮助。这包括他们请求不可用内容时的错误页面。在本指南中,我们将演示如何配置 Nginx 以在 Ubuntu 14.04 上使用自定义错误页面。
先决条件
要开始使用本指南,您需要一个具有sudo
特权的非 root 用户。您可以按照我们的 Ubuntu 14.04 初始设置指南来设置这种类型的用户。
您还需要在系统上安装 Nginx。了解如何按照进行设置。
完成上述步骤后,请继续阅读本指南。
完成上述步骤后,请继续阅读本指南。
创建您的自定义错误页面
我们将创建一些自定义错误页面用于演示目的,但您的自定义页面显然会有所不同。
我们会将自定义错误页面放在/usr/share/nginx/html
Ubuntu 的 Nginx 设置其默认文档根目录的目录中。我们将为 404 错误创建一个页面,custom_404.html
称为custom_50x.html
. 如果您只是进行测试,则可以使用以下几行。否则,请将您自己的内容放在以下位置:
echo "<h1 style='color:red'>Error 404: Not found :-(</h1>" | sudo tee /usr/share/nginx/html/custom_404.html
echo "<p>I have no idea where that file is, sorry. Are you sure you typed in the correct URL?</p>" | sudo tee -a /usr/share/nginx/html/custom_404.html
echo "<h1>Oops! Something went wrong...</h1>" | sudo tee /usr/share/nginx/html/custom_50x.html
echo "<p>We seem to be having some technical difficulties. Hang tight.</p>" | sudo tee -a /usr/share/nginx/html/custom_50x.html
我们现在有两个自定义错误页面,当客户端请求导致不同的错误时,我们可以提供这些页面。
配置 Nginx 以使用您的错误页面
现在,我们只需要告诉 Nginx,只要发生正确的错误情况,它就应该使用这些页面。在/etc/nginx/sites-enabled
要配置的目录中打开服务器块文件。我们将使用名为 的默认服务器块文件default
,但如果您使用的是非默认文件,则应调整自己的服务器块:
sudo nano /etc/nginx/sites-enabled/default
我们现在可以将 Nginx 指向我们的自定义错误页面。
将 404 错误定向到自定义 404 页面
使用该error_page
指令,以便在发生 404 错误时(未找到请求的文件时),提供您创建的自定义页面。我们将为文件创建一个位置块,在那里我们能够确保根目录匹配我们的文件系统位置,并且该文件只能通过内部 Nginx 重定向访问(客户端不能直接请求):
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
. . .
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
}
通常,我们不必root
在新的位置块中设置 ,因为它与服务器块中的根匹配。但是,我们在这里是明确的,以便即使我们将常规 Web 内容和关联的文档根目录移动到不同的位置,也会提供我们的错误页面。
将 500 级错误定向到自定义 50x 页面
接下来,我们可以添加指令以确保当 Nginx 遇到 500 级错误(与服务器相关的问题)时,它将为我们制作的另一个自定义页面提供服务。这将遵循我们在上一节中使用的完全相同的公式。这次我们设置了多个500级的错误,全部使用custom_50x.html
页面:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
. . .
error_page 404 /custom_404.html;
location = /custom_404.html {
root /usr/share/nginx/html;
internal;
}
error_page 500 502 503 504 /custom_50x.html;
location = /custom_50x.html {
root /usr/share/nginx/html;
internal;
}
location /testing {
fastcgi_pass unix:/does/not/exist;
}
}
在底部,我们还添加了一个虚拟的 FastCGI 通道,以便我们可以测试我们的 500 级错误页面。由于后端不存在,这将无法正常工作。在此处请求页面将允许我们测试 500 级错误是否服务于我们的自定义页面。
完成后保存并关闭文件。
重启 Nginx 并测试你的页面
通过键入以下内容来测试配置文件的语法:
sudo nginx -t
如果报告了任何错误,请在继续之前修复它们。当没有返回语法错误时,键入以下命令重新启动 Nginx:
sudo service nginx restart
现在,当您访问服务器的域或 IP 地址并请求一个不存在的文件时,您应该会看到我们设置的 404 页面:
http://server_domain_or_IP/thiswillerror
当您转到我们为 FastCGI pass 设置的位置时,我们将收到带有我们自定义 500 级页面的 502 Bad Gateway 错误:
http://server_domain_or_IP/testing
您现在可以返回并从 Nginx 配置中删除虚假的 FastCGI 传递位置。
结论
您现在应该为您的站点提供自定义错误页面。这是一种个性化用户体验的简单方法,即使他们遇到问题也是如此。对这些页面的一项建议是包含指向他们可以获得帮助或更多信息的位置的链接。如果这样做,请确保即使发生相关错误,链接目标也可访问。
本文由K哥影院首发,(www.kgeyyy.com)转载请注明来源