Log IP do IIS por meio de proxy reverso (Cloudflare)

4

Estou usando um servidor IIS por trás do belo proxy " Cloudflare ".

Esse farm de proxy reverso expõe um cabeçalho HTTP ao meu servidor, ou seja, HTTP_CF_CONNECTING_IP . Ele contém o IP que se conecta ao Cloudflare, para que eu possa ver quem está se conectando.

Agora, claro, desejo registrar esses IPs. Cloudflare tem um pequeno script web.config que usa a opção IIS REWRITE para alterar a variável REMOTE_ADDR server.

        <rules>
            <clear />
            <rule name="Replace REMOTE_ADDR with CF_CONNECTING_IP" enabled="true">
                <match url="(.*)" />
                <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
                    <add input="{HTTP_CF_CONNECTING_IP}" pattern="\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b" />
                </conditions>
                <serverVariables>
                    <set name="REMOTE_ADDR" value="{HTTP_CF_Connecting_IP}" />
                </serverVariables>
                <action type="None" />
            </rule>
        </rules>

Isso realmente afeta o registro em log? Além disso: Isso afeta o que recebo quando olho para o IP da solicitação ao executar, por exemplo, um aplicativo ASP.NET ou um script PHP?

Em caso afirmativo, por que isso existe: link

Quando podemos apenas usar a reescrita do IIS, que vantagem isso me traz?

    
por sinni800 21.08.2011 / 14:38

1 resposta

2

Sim, este "script" web.config do Cloudflare afeta o registro, capturando o endereço IP do usuário do cliente (conectando) conectado ao proxy e o entrega ao servidor de destino por meio da variável de servidor REMOTE_ADDR. Caso contrário, você veria o endereço IP do servidor proxy como o endereço IP solicitante.

Acho que isso funcionará com aplicativos ASP.NET, mas NÃO funcionará com aplicativos PHP. Para aqueles eu acho que você precisaria de algo ao longo das linhas de:

link (embora eu perceba que é específico do Drupal, é basicamente uma versão do PHP da maneira que você listou)

A razão pela qual a solução F5 existe é lidar com isso no lado do servidor proxy. A solução ASP.NET listada aqui e a solução PHP listada para o Drupal parecem estar utilizando um valor que o CloudFlare está encaminhando (HTTP_CF_Connecting_IP) e devem ser usados no servidor de destino.

Eu percebi que já faz um tempo desde que você fez essa pergunta, mas percebi que essa resposta pode ajudar outras pessoas, mesmo que você já tenha chegado a uma resposta / solução.

    
por 08.09.2011 / 06:04