Оказалось, что в таком виде Nginx проксирует запрос не на домен, а на его IP
Раскройте вашу проблему касаемо этого. Nginx всегда проксирует запрос на IP, другое дело, что если вместо IP указано доменное имя и оно нормально резолвится, а в nginx задана директива resolver, то по доменному имени Nginx вполне себе сможет получить IP для проксирования. Раскройте, что имеется ввиду под тем, что у вас проблема с тем, что "Nginx проксирует запрос не на домен, а на его IP"?
Возможно вы имели ввиду то, что без передачи заголовка
Host с именем домена целевого бекенда у вас не работает проксирование, потому что бекенды ожидают запросов только на отдельные доменные имена, отличающиеся от основного и друг от друга? Вообще обычно так не делают, и бекенды настраивают на работу с тем же доменным именем, что используется на фронте, но если прям очень надо, то в таком случае следует заменить блок
upstream на блок
split_clients:
split_clients $request_uri $site_backend {
50% site2.ru;
* site3.ru;
}
Добавить перезапись заголовка
Host:
proxy_set_header Host $site_backend;
И поправить директиву
proxy_pass:
proxy_pass https://$site_backend;
и не в корневую директорию как раньше, а в /folder.
А это потому что вы умудрились потерять концевой слеш в директиве
proxy_pass.