Ошибка входящего контроллера Nginx 400, когда заголовок запроса слишком длинный - PullRequest
0 голосов
/ 14 сентября 2018

Версия входного контроллера NGINX: 0.18.0 Версия Kubernetes (используйте версию kubectl): 1.11.1 Облачный провайдер или аппаратная конфигурация: Azure (AKS) Установить инструменты: Шлем

Что произошло: Контроллер Ingress выдает ошибку 400 с определенным GET, когда URL / заголовок запроса "слишком длинный".

То, что вы ожидали, произойдет: Запрос передается на правильный сервис и pod.

Как воспроизвести его (как можно более точно и минимально): Мы используем Keycloak для аутентификации. Когда пользователь входит в GET, это делается с помощью токена доступа, который генерируется keycloak. Токен доступа дает пользователю определенные права в приложении. У пользователей есть роли, которые дают им другие / дополнительные разрешения. Когда у пользователя много ролей, токен доступа становится значительно длиннее, что приводит к 400 на контроллере ingres. С пользователем с меньшим количеством ролей все работает нормально, и мы видим, что запрос GET передается нужному сервису.

Все, что нам нужно знать: Мы уже пытались изменить размер буфера заголовка и т. Д. От 4 до 8 и 16 Кб, но это ничего не дало. Я установил лог-уровень входного контроллера для отладки, но он больше не дает информации об ошибке 400.

1 Ответ

0 голосов
/ 14 сентября 2018

Мы решили эту проблему, также настроив бэкэнд-сервис, Spring Boot-сервис со встроенным Tomcat, конфигурацию с server.max-http-header-size: 64000. Таким образом, необходимо было повысить параметры сервиса Nginx и бэкэнда. 1001 * *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...