如何使用 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 显示带有前导斜杠的代码。包括它是通常的做法。