INTEGRITY Документация

Хеш

Hash steering указывает Cloudflare, куда направлять запросы, на основе сочетания веса эндпоинтов и предыдущих запросов с этого IP-адреса. Это гарантирует, что запросы с одного и того же IP-адреса будут попадать на один и тот же эндпоинт, однако фактическое распределение трафика может отличаться от заданных весов эндпоинтов.

Ограничение при использовании Workers

Hash Steering опирается на x-forwarded-for заголовок для определения исходного IP-адреса запроса. Однако если Cloudflare Worker используется перед балансировщиком нагрузки, это может повлиять на работу Hash Steering.

Когда запрос поступает из браузера, в нём отсутствует заголовок x-forwarded-for заголовок, но если запрос проксируется к балансировщику нагрузки через Worker, в заголовок записывается IP-адрес Worker вместо исходного IP-адреса клиента. Поскольку IP-адрес Worker (часто это публичный IP-адрес Cloudflare) может меняться от запроса к запросу, Hash Steering способен направлять запросы одного и того же клиента на разные конечные точки, из-за чего маршрутизация трафика становится непоследовательной.

Обходное решение

Чтобы Hash Steering работала корректно при использовании Worker перед Load Balancer, вручную задайте x-forwarded-for заголовок в Worker значением исходного IP-адреса клиента. Задав вручную x-forwarded-for к CF-Connecting-IP, Hash Steering будет работать как ожидается, обеспечивая стабильность трафика для конечных пользователей.