如何使用 nginx 从文档根目录而不是子目录显示自定义 404?
How to show a custom 404 from the document root rather than a subdirectory using nginx?
我有以下 nginx.conf
部分:
# valid url
location /foo/bar/ {
proxy_pass http://my_server/foo/bar/;
}
# redirect base url to index.html
location = / {
root /usr/share/nginx/html;
index index.html;
}
# anything not listed above to 404
location / {
return 404;
}
error_page 404 404.html;
error_page 500 502 503 504 50x.html;
当我启动我的 nginx 服务器并请求如下路由时:https://my_server/blah/
,我被正确地重定向到 https://my_server/404.html
页面,在那里我可以看到我的自定义 404。但是,如果我发出另一个请求到带有子目录的 url:https://my_server/blah/baz
,我的 nginx 服务器试图找到 https://my_server/blah/404.html
my_server-reverse_proxy-1 | 2022/05/02 23:05:35 [error] 7#7: *1 open() "/usr/share/nginx/html/blah/404.html" failed (2: No such file or directory), client: 11.11.111.111, server: my_server.com, request: "GET /blah/404.html HTTP/1.1", host: "my_server.com"
如何正确配置我的 NGINX 服务器以处理不存在的子目录 urls 的 404?
要从文档根目录加载错误文档,它们的相对 URL 应该以 /
开头
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
nginx documentation for error_page 显示带有前导斜杠的代码。包括它是通常的做法。
我有以下 nginx.conf
部分:
# valid url
location /foo/bar/ {
proxy_pass http://my_server/foo/bar/;
}
# redirect base url to index.html
location = / {
root /usr/share/nginx/html;
index index.html;
}
# anything not listed above to 404
location / {
return 404;
}
error_page 404 404.html;
error_page 500 502 503 504 50x.html;
当我启动我的 nginx 服务器并请求如下路由时:https://my_server/blah/
,我被正确地重定向到 https://my_server/404.html
页面,在那里我可以看到我的自定义 404。但是,如果我发出另一个请求到带有子目录的 url:https://my_server/blah/baz
,我的 nginx 服务器试图找到 https://my_server/blah/404.html
my_server-reverse_proxy-1 | 2022/05/02 23:05:35 [error] 7#7: *1 open() "/usr/share/nginx/html/blah/404.html" failed (2: No such file or directory), client: 11.11.111.111, server: my_server.com, request: "GET /blah/404.html HTTP/1.1", host: "my_server.com"
如何正确配置我的 NGINX 服务器以处理不存在的子目录 urls 的 404?
要从文档根目录加载错误文档,它们的相对 URL 应该以 /
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
nginx documentation for error_page 显示带有前导斜杠的代码。包括它是通常的做法。