Использование cURL и заголовка host для обхода балансировщика нагрузки

Сие опубликовал в день года

Если у вас есть балансировщик нагрузки и расположенные за ним бэкенды с рядом виртуальных хостов и вы хотите обратиться к определенному бэкенду и определенному виртуальному хосту, то у вас могут возникнуть небольшие трудности.

Основная проблема в том, что если вы обратитесь к domain.tld, то попадете на балансировщик нагрузки и затем будете направлены на случайный бэкенд. Но мы хотим подключиться к определенному серверу напрямую, поэтому требуется использовать его IP-адрес. Например, так:

curl 'http://10.1.2.28:81/'

Однако из-за того, что серверы используют виртуальные хосты основанные на доменных именах, то в ответ мы получим ошибку 404. Трюк в том, чтобы передавать заголовок Host:

curl --header 'Host: domain.tld' 'http://10.1.2.28:81/'

Это позволит нам запросить нужный виртуальный хост на нужном бэкенде.

Наверх