Добавьте пользовательский ответ на код состояния 413, используя Nginx Ingress Controller - PullRequest
0 голосов
/ 11 ноября 2019

Мне нужно настроить nginx для отправки ответа JSON для кода состояния 413. Я пробовал это:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: {{ .Chart.Name }}-app2
  annotations:
    kubernetes.io/ingress.class: "nginx"
    ingress.kubernetes.io/server-snippet: |
      proxy_intercept_errors on;
      error_page 413 /413.json;
      location /413.json {
        return 413 '{"error": {"status_code": 413,"status": "TEST"}}';
      }
spec:
  tls:
  - hosts:
    - app2.example.com
    secretName: wildcard-tls
  rules:
  - host: app2.example.com
    http:
      paths:
      - path: /
        backend:
          serviceName: {{ .Chart.Name }}-app2
          servicePort: 80

но безуспешно. Он по-прежнему возвращает HTML-страницу с текстом «413 Request Entity Too Large».

Не могли бы вы подсказать, как настроить nginx в kubernetes для возврата json на 413?

1 Ответ

2 голосов
/ 11 ноября 2019

Вы можете попробовать добавить этот фрагмент к входу

nginx.ingress.kubernetes.io/server-snippet: |
      location @custom_413 {
        default_type application/json;
        return return 413 '{"error": {"status_code": 413,"status": "TEST"}}';;
      }
      error_page 413 @custom_413;
...