Nginx вход возвращает пользовательские ошибки http, когда у меня несколько модулей - PullRequest
1 голос
/ 24 марта 2020

У меня есть рабочая нагрузка, служба и входящий контроллер Nginx, перенаправляющий трафик c в службу. Все хорошо, пока у меня только один стручок. Теперь, когда я увеличиваю масштаб, установив для реплик значение 2, ошибки http, возвращаемые моим API, преобразуются в страницу HTML - скрывая важную информацию, которую я возвращаю с ошибкой.

Когда мой API возвращает:

res.status(502).send('The error is THIS!');

Что я вижу в ответе:

<html>

<head>
    <title>502 Bad Gateway</title>
</head>

<body bgcolor="white">
    <center>
        <h1>502 Bad Gateway</h1>
    </center>
    <hr>
    <center>nginx/1.11.3</center>
</body>

</html>

Как обойти это пользовательское создание ошибки и получить мое оригинальное сообщение об ошибке?

1 Ответ

2 голосов
/ 25 марта 2020

Это по проекту . Если существует более одного входящего бэкэнда (конечной точки службы), nginx будет пытаться использовать следующий бэкэнд, когда он получит статус ответа 502, 503 или 504 от бэкэнд-службы. Настраиваемая ошибка возникает, когда больше нет внутренних попыток.

Установка аннотации nginx.ingress.kubernetes.io/service-upstream: "true" изменит поведение nginx так, чтобы оно указывало на один бэкэнд, кластерную службу k8s ClusterIP. Обычно nginx управляет всеми конечными точками служб в качестве внутренних серверов.

Обратите внимание, что использование этой аннотации переносит решения о балансировке нагрузки в домен маршрутизации службы кластеров Kubernetes, а не в nginx logi c.

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