Nginx ip_hash за прокси (Cloudflare)
Мы используем nginx для нашей балансировки нагрузки, и нам нужен ip_hash, чтобы гарантировать, что наш сервер работает нормально.
Когда мы начали использовать cloudflare, большинство наших запросов направляются на один сервер, поскольку кажется, что все они идентифицируются только по IP-адресу cloudflare. Мы хотели бы сбалансировать его лучше, и было бы хорошо, если бы ip_hash использовал заголовок CF-Connecting-IP, который cloudflare помещает в запросы.
Кто-нибудь знает, как это сделать?
upstream backend {
ip_hash;
#proxy_next_upstream_timeout 30;
server localhost:8080 max_fails=2 fail_timeout=180;
server somethign:8080 ;
server something2:8080;
}
2 ответа
Cloudflare имеет эти диапазоны IP-адресов, вы можете использовать встроенный модуль real_ip nginx и правильно настроить заголовки https://www.cloudflare.com/ips
set_real_ip_from 204.93.240.0/24;
real_ip_header CF-Connecting-IP;
Как альтернатива методам, предложенным в этой теме hash
директива может быть использована для построения хеш-таблицы из любой переменной, в нашем случае $http_cf_connecting_ip
заголовок.
upstream backend {
hash $http_cf_connecting_ip;
}