介绍
Nginx是一个高性能的Web服务器,能够提供灵活性和强大的内容。 在设计网页时,自定义用户会看到的每一条内容通常很有帮助。 这包括错误页面,当他们请求不可用的内容时。 在本指南中,我们将演示如何配置Nginx在CentOS 7上使用自定义错误页面。
先决条件
要使用本指南开始,您将需要一个非root用户sudo
权限。 您可以与我们一起以下设置此类型的用户为CentOS 7初始设置向导 ,您还需要在系统上已经安装Nginx的。 了解如何通过以下设置这本指南 。
创建自定义错误页面
我们将创建一些自定义错误页面用于演示,但是您的自定义页面显然会有所不同。
我们将会把我们的自定义错误页中/usr/share/nginx/html
,其中的CentOS的Nginx的设置它的默认文档根目录。 我们可以给404错误称为页面custom_404.html
,一个用于一般称为500级错误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它应该在正确的错误条件发生时使用这些页面。 我们需要调整我们的服务器块。 在CentOS 7,主服务器块位于/etc/nginx/nginx.conf
文件。 我们将配置此服务器块,但您应该调整您已配置的其他服务器块:
sudo nano /etc/nginx/nginx.conf
在文件内,找到定义服务器上下文的块。 我们现在可以将Nginx指向我们的自定义错误页面。
直接404错误到自定义404页面
CentOS的Nginx的配置文件已经定义了使用一个404错误页面error_page
指令。 我们需要更改此设置,以便在发生404错误(找不到请求的文件时)时,系统会投放您创建的自定义网页。 我们将调整文件的相关位置块,以便我们能够确保根匹配我们的文件系统位置,并且该文件只能通过内部Nginx重定向(客户端不能直接请求)访问:
http {
. . .
server {
. . .
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
页:
http {
. . .
server {
. . .
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 systemctl restart nginx
现在,当您访问您的服务器的域或IP地址并请求不存在的文件时,您应该会看到我们设置的404页面:
http://server_domain_or_IP/thiswillerror
当您访问我们为FastCGI通行证设置的位置时,我们会在自定义500级页面上收到502错误网关错误:
http://server_domain_or_IP/testing
你现在可以回去,从你的Nginx配置中删除假的FastCGI传递位置。
结论
您现在应该为自己的网站提供自定义错误网页。 这是一种简单的方式,即使用户遇到问题,也可以个性化您的用户体验。 这些页面的一个建议是包括到他们可以去获得帮助或更多信息的位置的链接。 如果这样做,请确保即使在发生相关错误时也可以访问链接目标。