У меня есть следующий 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 для обработки ошибок 404 для несуществующих URL-адресов подкаталогов?
Чтобы загрузить документы об ошибках из корня документа, относительный URL-адрес для них должен начинаться с /
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
документация nginx для error_page показывает этот код с косой чертой в начале. В том числе это обычная практика.
спасибо, синтаксис nginx меня убьет...
URI должны начинаться с
/
, попробуйте:error_page 404 /404.html;