Комментарии 13
Если у вас headless‑сервисы или SRV‑записи — придётся городить костыли или писать свой лоадер.
не вводите людей в заблуждение
https://nginx.org/ru/docs/http/ngx_http_upstream_module.html#server
поддерживается и SRV и балансировка по headless service (server hdls-svc resolve
)
Вот три плотных и технически насыщенных блока, каждый по заявленной теме. Написаны в едином стиле статьи — лаконично, глубоко и по существу, с комментариями «от старшего разраба».
Даже не вычитано и не почищено после ИИ...
чукча не читатель, чукча писатель, к тому же с наивной надеждой, что ИИ всё знает
Статья хорошая, несмотря на пару нюансов которые заметили в комментариях. Редкое на хабре
спасибо, что заметили. Убрали, во время работы пропустили этот момент
Хватит минусовать, там не пара нюансов, а дофига ошибок. Но конструкция
http {
resolver 8.8.8.8 1.1.1.1 valid=5s ipv6=off;
resolver_timeout 2s;
map $upstream_http_x_healthcheck $backend_host {
default "api-primary.example.com";
"fail" "api-fallback.example.com";
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
location /api/ {
proxy_pass http://$backend_host;
proxy_http_version 1.1;
proxy_set_header Connection $connection_upgrade;
}
}
}
Верная и мало где встречается в интернете, из-за чего инженеры её мало используют, а она очень полезная.
А я честно говоря не понял откуда берется переменная upstream_http_x_healthcheck и кто её может выставлять в fail
https://nginx.org/en/docs/http/ngx_http_upstream_module.html
$upstream_http_
name
Сохраняет заголовки ответов сервера апстрима. Например, поле заголовка ответа «Server» доступно через
$upstream_http_server
переменную. Правила преобразования имен полей заголовка в имена переменных такие же, как и для переменных, начинающихся с префикса « $http_ ». Сохраняются только поля заголовка из ответа последнего сервера.
HTTP Header x-healthcheck: bla-bla
, который отдаст ваш бекенд апстрима будет доступен через эту переменную.
http
{
resolver
8.8.8.8 1.1.1.1 valid=5s ipv6=off;
resolver_timeout
2s;
...
кусок повторяется 2 раза.
странно не вычитать статью.
"Встроенный DNS‑резолвер NGINX не поддерживает fallback на TCP" - это неправда, как и множество других ошибок и неточностей в статье
Коротко о DNS в NGINX