Nginx error_page 指令

本文介绍了如何使用Nginx配置错误页面,包括内部重定向到指定URI、更改响应代码、URL重定向以及根据响应代码返回不同响应。通过示例配置文件,展示了404和403错误的处理方式,包括跳转至静态资源和外部网站。同时提供了一个实际应用示例,用于处理不同错误代码的情况。

前提环境:

  • NGINX

涉及参考文档:

error_page 语法

Syntax:	    error_page code ... [=[response]] uri;
Default:	
Context:	http, server, location, if in location

将针对指定错误相应码 重定向指定URI,一个uri值可以包含变量。

一、内部重定向到指定uri

vim /etc/nginx/conf.d/error_page.conf
server {
        listen           443 ssl;
        charset          utf-8;
        server_name      www.nginx-error.com *.nginx-error.com; #需要将yourdomain.com替换成证书绑定的域名。
        error_log        /var/log/nginx/bot-sca-error.log;
        access_log       /var/log/nginx/bot-sca-access.log testlog;
        ssl_certificate  /root/nginx.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key  /root/nginx.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
        ssl_session_timeout   5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #表示使用的加密套件的类型。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;
        access_log  /var/log/nginx/host.access.log  main;

        location /test {
                root /oss/bot_ai_inspect_test/bot-sca;
                error_page 404  404.jpeg  
        }

}

请求访问: www.nginx-error.com/tests

请求返回状态码为404 ,自动跳转到 https://www.nginx-error.com/ 404.jpeg
在这里插入图片描述

二、可以使用 response 语法将响应代码更改为另一个

vim /etc/nginx/conf.d/error_page.conf

在这里插入图片描述

nginx -s reload

请求: www.nginx-error.com/tests
在这里插入图片描述

按道理应该返回的状态码为404,目前可以查看状态码为200。

三、使用 URL 重定向进行错误处理, 跳转百度

vim /etc/nginx/conf.d/error_page.conf
server {
        listen           443 ssl;
        charset          utf-8;
        server_name      www.nginx-error.com *.nginx-error.com; #需要将yourdomain.com替换成证书绑定的域名。
        error_log        /var/log/nginx/bot-sca-error.log;
        access_log       /var/log/nginx/bot-sca-access.log testlog;
        ssl_certificate  /root/nginx.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key  /root/nginx.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
        ssl_session_timeout   5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #表示使用的加密套件的类型。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;

        access_log  /var/log/nginx/host.access.log  main;


        location /test {
                root /oss/bot_ai_inspect_test/bot-sca;
                error_page 404  =200 404.jpeg;
        }

        location /error {
                root /oss/bot_ai_inspect_test/bot-sca;
                error_page 403  404 =302 https://www.baidu.com;
        }
}
nginx -s reload

请求: http://www.nginx-error.com/error

在这里插入图片描述

四、服务器返回不同的响应代码,以使用它的代码进行响应返回:

vim /etc/nginx/conf.d/error_page.conf
server {
        listen           443 ssl;
        charset          utf-8;
        server_name      www.nginx-error.com *.nginx-error.com; #需要将yourdomain.com替换成证书绑定的域名。
        error_log        /var/log/nginx/bot-sca-error.log;
        access_log       /var/log/nginx/bot-sca-access.log testlog;
        ssl_certificate  /root/nginx.pem;  #需要将cert-file-name.pem替换成已上传的证书文件的名称。
        ssl_certificate_key  /root/nginx.key; #需要将cert-file-name.key替换成已上传的证书密钥文件的名称。
        ssl_session_timeout   5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        #表示使用的加密套件的类型。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #表示使用的TLS协议的类型。
        ssl_prefer_server_ciphers on;

        access_log  /var/log/nginx/host.access.log  main;


        location /test {
                root /oss/bot_ai_inspect_test/bot-sca;
                error_page 404  =200 404.jpeg;
        }

        location /error {
                root /oss/bot_ai_inspect_test/bot-sca;
                error_page 403  404 =302 https://www.baidu.com;
        }

        location /core {
                root /oss/bot_ai_inspect_test/bot-sca;
                error_page 403  404 = 404.jpeg;  # = 响应码什么返回就响应什么。  
        }

}

请求: http://www.nginx-error.com/core
在这里插入图片描述

这部分内容自行去测试吧
在这里插入图片描述

实际可参考的部分
1、error_page 支持 嵌入 http 中,所有404 的响应都临时重定向到 bilibli网站

     error_page 404 =302 https://www.bilibili.com;

server {
        listen       80 default_server;
        server_name  www.nginx-test.com www.nginx-test-rewrite.com www.nginx-test-pass.com www.nginx-location.com www.nginx-error.com;
        return 302   https://$host$request_uri;
}

在这里插入图片描述

请求: http://www.nginx-error.com/bbbb
http://www.nginx-error.com/aaaa

在这里插入图片描述

### 回答1: Nginxerror_page 配置用于设置错误页面的处理方式。可以使用 error_page 指令将特定的 HTTP 状态码映射到特定的错误页面。 语法: error_page 错误码 [= URL]; 例如: ``` error_page 404 /404.html; error_page 500 502 503 504 /50x.html; ``` 这样当服务器返回404状态码时,将会返回/404.html,当服务器返回500,502,503,504状态码时,将会返回/50x.html 请注意,错误页面文件必须在服务器上可用。 ### 回答2: 在Nginx中,error_page用于配置服务器遇到错误时的错误页面。具体来说,error_page指令用于定义当客户端请求的资源出现错误时所返回给客户端的页面或路径。 要配置error_page,首先需要在Nginx配置文件中指定所需的错误代码和对应的错误页面或路径。例如,以下是配置404错误的错误页面为/error/404.html的示例: ``` error_page 404 /error/404.html; ``` 在这个示例中,当服务器返回404错误时,将会将客户端重定向到/error/404.html页面。 除了简单的路径,error_page还支持其他形式的配置。例如,可以使用明确的URL来定义错误页面: ``` error_page 500 http://example.com/error/500.html; ``` 这个配置将会将500错误重定向到http://example.com/error/500.html页面。 还可以将错误页面配置为其他返回状态码的页面,例如400、503等。可以同时配置多个错误页面,Nginx会按照配置的顺序查找并使用第一个匹配的错误页面。 通过配置error_page,可以在服务器遇到错误时返回适当的错误页面,提高用户体验和处理错误的可视化。 ### 回答3: 在Nginx中,可以通过配置error_page来指定自定义的错误页面。error_page指令允许当服务器出现特定错误时指定一个自定义页面来替代默认的错误页面。 配置error_page的语法如下: ``` error_page code [target]; ``` code是需要自定义错误页面的错误码,可以是一个具体的错误码(如404),也可以是一个错误码的范围(如400-499表示所有的客户端错误)。 target是指定自定义错误页面的路径。路径可以是一个本地路径,也可以是一个远程URL。 例如,如果想指定404错误的自定义页面为`/var/www/html/404.html`,可以在Nginx的配置文件中添加如下配置: ``` error_page 404 /404.html; ``` 这样,当出现404错误时,Nginx会显示`/var/www/html/404.html`作为错误页面。 另外,可以通过配置多个error_page来指定不同错误码对应的不同自定义页面。例如: ``` error_page 404 /404.html; error_page 500 502 /50x.html; ``` 这样,当出现404错误时,会显示`/404.html`作为错误页面;当出现500或502错误时,会显示`/50x.html`作为错误页面。 需要注意的是,当指定了自定义错误页面后,Nginx会优先显示自定义页面,如果没有指定自定义页面或自定义页面不存在,才会显示默认的错误页面。 综上所述,通过配置error_page,可以方便地指定自定义错误页面,提供更好的用户体验。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值