Proxy reverso Nginx no contêiner do Docker - IP incorreto registrado

4

Estou executando o Nginx em um contêiner do Docker como um proxy reverso usando a configuração abaixo. Ele basicamente redireciona a solicitação para outro contêiner do docker em execução na mesma máquina

Problema

O problema é que a saída no log de acesso informa o endereço IP incorreto do cliente, especificamente recebo o IP do host do Docker 172.17.0.1 :

172.17.0.1 - - [24/May/2016:19:50:18 +0000] "GET /admin/ HTTP/1.1" 200 19243 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0" "-"

Eu tentei seguir o conselho de este post referente à diretiva set_real_ip_from , mas sem sucesso.

Configuração

server {
    listen       8000 ssl;
    server_name  example.com;

    access_log  /var/log/nginx/host.access.log  main;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.key;

    set_real_ip_from 172.17.0.1;
    real_ip_header X-Forwarded-For;
    real_ip_recursive on;

    proxy_set_header    Host $host:$server_port;
    proxy_set_header    X-Real-IP $remote_addr;
    proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header    X-Forwarded-Proto $scheme;

    location / {
        proxy_pass  http://172.17.0.1:8100/;
    }
}

O que estou perdendo aqui?

Editar:

Acabei de perceber que outras pessoas têm um problema semelhante aqui e aqui mas infelizmente não há solução.

    
por mincos 24.05.2016 / 22:24

1 resposta

0

Você precisa definir o X-Forwarded-For do cabeçalho (não X-Real-IP , que é ainda menos padrão) na máquina que faz o proxy, e você precisa dizer ao que está recebendo o pedido para confiar que o O cabeçalho XFF é legítimo porque está vindo de um IP conhecido. A configuração que você tem em sua pergunta é apenas para uma máquina, mas tem a configuração que você precisa para os dois lados.

    
por 25.05.2016 / 09:50

Tags