文章目录
- @[toc]
- 指定错误代码的 url 路径
- 使用 =response 来更改状态码
- 使用 URL 重定向
- 开始搞事情
- 创建一个 404 文件
- 配置 conf 文件
- 通过 CURL 命令验证
文章目录
- @[toc]
- 指定错误代码的 url 路径
- 使用 =response 来更改状态码
- 使用 URL 重定向
- 开始搞事情
- 创建一个 404 文件
- 配置 conf 文件
- 通过 CURL 命令验证
error_page
以下内容,摘抄翻译自官网
语法格式
-error_page code ... [=[response]] uri;
上下文
-http
,server
,location
,if in location
指定错误代码的 url 路径
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
使用 =response 来更改状态码
error_page 404 =200 /empty.gif;
使用 URL 重定向
error_page 403 http://example.com/forbidden.html;
error_page 404 =301 http://example.com/notfound.html;
开始搞事情
创建一个 404 文件
记住自己创建的文件在什么路径,比如我创建的路径是:
/usr/local/openresty/nginx/html-error-page
<html>
<head>
<meta charset="UTF-8">
</head>
<head>
<title>404 Not Found</title></head>
<body>
<center>
<h1>你瞅啥</h1>
</center>
<hr>
</body>
</html>
配置 conf 文件
error_page
可以在任何模块内使用,具体的场景,以自己的实际诉求为准
http
模块相当于全局模块,所有server
模块内的虚拟主机都可以适用server
模块仅对当前的虚拟主机适用location
模块仅对当前规则生效if in location
属于套娃行为,在location
内嵌套了一层location
# 自定义 Server 字段请求头,不配置的情况下,默认是当前 web 服务器的版本
## 比如 openresty/1.15.8.2
more_set_headers 'Server: 你瞅啥';
server {
listen 80;
server_name localhost;
# 修改状态码为 200,并且指定到 /404.html 这个路径
error_page 404 =200 /404.html;
# 通过绝对匹配 /404.html 这个路径
location = /404.html {
# /404.html 需要通过配置 root 来指定 html 文件的路径
## 否则会找默认的路径,找不到就会返回默认的 404 文件,而不是自定义的 404 文件
root /usr/local/openresty/nginx/html-error-page;
index index.html index.htm 404.html;
}
}
通过 CURL 命令验证
查看返回的状态码
我的配置文件就上面这一段,所以肯定不存在
/api
这个路径
curl -I localhost/api
返回的内容如下,可以看到,状态码是
200
,但是有一个前提,那就是/404.html
这个文件被找到了,如果/404.html
这个文件找不到,返回的状态码还是404
HTTP/1.1 200 OK
Date: Sun, 24 Dec 2023 13:27:20 GMT
Content-Type: text/html
Content-Length: 166
Last-Modified: Sun, 24 Dec 2023 12:59:19 GMT
Connection: keep-alive
ETag: "65882b27-a6"
Server: 你瞅啥
Accept-Ranges: bytes
当然,也可以浏览器访问一下