如何配置的Nginx在Ubuntu 14.04使用自定义错误页

介绍

Nginx是一个高性能的Web服务器,能够提供灵活性和强大的内容。 在设计网页时,自定义用户会看到的每一条内容通常很有帮助。 这包括错误页面,当他们请求不可用的内容时。 在本指南中,我们将演示如何配置Nginx在Ubuntu 14.04上使用自定义错误页面。

先决条件

要使用本指南开始,您将需要一个非root用户sudo权限。 你可以随着我们的以下设置此类型的用户对Ubuntu 14.04的初始设置指导

你还需要在系统上安装Nginx。 了解如何通过以下设置这本指南

完成上述步骤后,请继续阅读本指南。

创建自定义错误页面

我们将创建一些自定义错误页面用于演示,但是您的自定义页面显然会有所不同。

我们将会把我们的自定义错误页中/usr/share/nginx/html ,其中Ubuntu的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它应该在正确的错误条件发生时使用这些页面。 打开服务器模块文件中/etc/nginx/sites-enabled您要配置目录。 我们将使用名为默认的服务器块文件default ,但你应该,如果你使用非默认文件调整自己的服务器块:

sudo nano /etc/nginx/sites-enabled/default

我们现在可以将Nginx指向我们的自定义错误页面。

直接404错误到自定义404页面

使用error_page这样,当发生404错误(如果找不到一个请求的文件),您创建的自定义页面供应指令。 我们将为文件创建一个位置块,我们可以确保根目录与我们的文件系统位置匹配,并且该文件只能通过内部Nginx重定向(客户端不能直接请求)访问:

/ etc / nginx / sites-enabled / default
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页:

/ etc / nginx / sites-enabled / default
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

nginx自定义404

当您访问我们为FastCGI通行证设置的位置时,我们会在自定义500级页面上收到502错误网关错误:

http://server_domain_or_IP/testing

nginx custom 50x

你现在可以回去,从你的Nginx配置中删除假的FastCGI传递位置。

结论

您现在应该为自己的网站提供自定义错误网页。 这是一种简单的方式,即使用户遇到问题,也可以个性化您的用户体验。 这些页面的一个建议是包括到他们可以去获得帮助或更多信息的位置的链接。 如果这样做,请确保即使在发生相关错误时也可以访问链接目标。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏