前提环境:
- 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