Nginx ip_hash por trás do proxy (Cloudflare)

2

Usamos nginx para nosso balanceamento de carga e precisamos de ip_hash para garantir que nosso servidor funcione bem.

Quando começamos a usar o cloudflare, a maioria dos nossos pedidos é de um servidor, pois parece que todos eles são identificados apenas pelo IP do cloudflare. Gostaríamos de equilibrar melhor, e seria bom que o ip_hash usasse o cabeçalho CF-Connecting-IP que o cloudflare coloca em pedidos.

Alguém sabe como fazer isso?

upstream backend {
    ip_hash;
    #proxy_next_upstream_timeout 30;
    server localhost:8080 max_fails=2 fail_timeout=180;
    server somethign:8080 ;
    server something2:8080;
}
    
por digao_mb 17.01.2015 / 20:25

2 respostas

6

Cloudflare tem esses intervalos de ip, você pode usar o módulo real_ip do nginx e configurar os cabeçalhos corretamente link

set_real_ip_from   204.93.240.0/24;
real_ip_header     CF-Connecting-IP;

link

    
por 17.01.2015 / 22:00
1

Como alternativa aos métodos sugeridos neste tópico, a diretiva hash pode ser usada para criar tabela hash de qualquer variável, no nosso caso $http_cf_connecting_ip header.

upstream backend {
  hash $http_cf_connecting_ip;
}
    
por 22.06.2017 / 10:13