> On 24 May 2019, at 16:19, kron <nginx-fo...@forum.nginx.org> wrote: > > Доброго дня! > > nginx: 1.15.8 > > Конфигурация простая (конечно она сильно шире, но в качестве бэкенда сейчас > действительно один сервер задается через переменную): > > split_clients "${remote_addr}${cookie_uid}" $backend { > * "backend1.eu-central-1.elb.amazonaws.com"; > } > > > server { > listen 80; > > location / { > proxy_pass http://$backend; > } > } > > Столкнулся с интересной проблемой. В один момент у меня перестали идти > запросы на бэкенд, но быстро запросы восстановились. Поискал в логах, в > итоге нашел такие ошибки: > > 2019/05/24 08:40:26 [warn] 308#308: *1978088914 upstream server temporarily > disabled while reading response header from upstream, client: x.x.x.x, > server: xxxx, request: "GET / HTTP/1.1", upstream: "http://x.x.x.x:80/", > host: "xxxx" >
Если апстрим с именем, в которое вычислилась переменная в proxy_pass (как в примере выше), не описан явно или неявно, и потому используется resolver (так это или нет - неясно из-за неполноты примера), то ошибка возможна, если вычисленное имя порезолвилось в несколько адресов и выбранный среди них сервер оказался неработоспособным. > Честно говоря я предполагал такое поведение при исользовании группы > серверов, но тут такого нет, а апстрим все-равно был забанен из-за ошибок. В случае если адрес сервера в proxy_pass с переменными определяется с помощью resolver'а, то на каждый запрос создаётся новый апстрим. Это может быть не так e.g. в случае алиасинга с неявным апстримом; я бы проверил это в первую очередь. -- Sergey Kandaurov _______________________________________________ nginx-ru mailing list nginx-ru@nginx.org http://mailman.nginx.org/mailman/listinfo/nginx-ru