Configuração de variável condicional no nginx

3

Estou escrevendo uma configuração nginx que requer um proxy e preciso do endereço IP original. A variável $proxy_add_x_forwarded_for do HttpProxyModule do Nginx parece perfeitamente adequada para a tarefa, exceto pelo fato do meu Nginx estar atrás de um saldo de carga que não define X-Forwarded-For , mas X-Cluster-Client-Ip .

Agora, uma possibilidade seria usar

set X-Forwarded-For $http_x_cluster_client_ip,$proxy_add_x_forwarded_for

mas algumas vezes são acessos diretos ao servidor, o que deixaria uma vírgula inicial no cabeçalho. Pensei em usar if , mas esse cenário cai bem no meio dos casos em que if é problemático para usar.

Observe que, como o cliente pode ter sido intermediado por proxy, eu quero preservar todos os dados presentes no cabeçalho X-Forwarded-For , se existir, além para passar dados de X-Cluster-Client-Ip .

Alguma alternativa?

    
por Daniel C. Sobral 30.05.2013 / 18:30

1 resposta

2

Você pode usar o nginx HttpRealipModule para filtrar acessos do Loadbalancer:

set_real_ip_from   192.168.0.1;
real_ip_header     X-Cluster-Client-Ip;

link

    
por 30.05.2013 / 19:21

Tags