Вы должны заглянуть в Nginx Ingress controller и использовать custom-http-errors .
Включает, какие коды HTTP следует передавать для обработки с директивой error_page
Установка хотя бы одного кода также позволяет proxy_intercept_errors , которые необходимы для обработки error_page.
Пример использования: custom-http-errors: 404,415
Это будет работать при создании ConfigMap для входного контроллера:
apiVersion: v1
kind: ConfigMap
name: nginx-configuration-ext
data:
custom-http-errors: 502,503,504
proxy-next-upstream-tries: "2"
server-tokens: "false"
Также посмотрите это сообщение в блоге .
Другой способ будет добавить Annotations
к вашему входу, он поймает нужные вам ошибки и перенаправит его на другой сервис в этом случае nginx-errors-svc
nginx.ingress.kubernetes.io/default-backend: nginx-errors-svc
nginx.ingress.kubernetes.io/custom-http-errors: 404,503
nginx.ingress.kubernetes.io/default-backend: error-pages
Если у вас возникнут проблемы с использованием этого, попробуйте использовать server-snippet , который добавит пользовательскую конфигурацию в блок конфигурации сервера:
nginx.ingress.kubernetes.io/server-snippet: |
location @custom_503 {
return 404;
}
error_page 503 @custom_503;
Вам следует рассмотреть чтение Пользовательская обработка ошибок с помощью Kubernetes Nginx Ingress Controller и Custom Er Страница для Nginx Ingress Controller .