0

When using Cloudflare with Magento Community Open Source 1.9.x (now forked as OpenMage), one of the first problems many people notice, when using "Proxied" DNS is that the visitor's IP address is "incorrect".

In fact, it's not incorrect, the server is receiving the proxy IP address. Nevertheless, this is not very useful if we're using IP for such things as location etc.

So how do we get the actual visitor IP address?

TLDR: Option 1 is the most appropriate and easiest. Option 2 is the server-wide solution.

Option 1: Application Wide

In app/etc/modules/local.xml.additional there is the following in config/global:

<config>
    <global>
        <remote_addr_headers>
            <header1>HTTP_X_REAL_IP</header1>
            <header2>HTTP_X_FORWARDED_FOR</header2>
        </remote_addr_headers>
    </global>
</config>

Copy the <remote_addr_headers></remote_addr_headers> and close app/etc/modules/local.xml.additional.

The header CloudFlare provides that contains the visitor's actual IP is HTTP_CF_CONNECTING_IP. Therefore we need to add the following to the app/etc/modules/local.xml.

Open app/etc/modules/local.xml and add the <remote_addr_headers></remote_addr_headers> code below inside the <global></global> section as follows:

<config>
    <global>
        <remote_addr_headers>
            <header1>HTTP_CF_CONNECTING_IP</header1>
        </remote_addr_headers>
    </global>
</config>

Kudos to Tall Pall for this solution.

Option 2: Server Wide

This option is preferred with a dedicated server or where sever-wide visitor IP restoration is needed.

Depending on which web server is used, Apache requires either mod_remoteip or mod_cloudflare and or Nginx cloudflare-watch.

Luckily, CloudFlare has an article on how to do this here.

Option 3: Tell CloudFlare to Restore Visitor IP

Cloudflare can be configured to pass the visitor's IP address in the X-Forwarded-For header. Option 1 and 2 are both better than this option.

1 Answer 1

0

In app/etc/modules/local.xml.additional there is the following in config/global:

<config>
    <global>
        <remote_addr_headers>
            <header1>HTTP_X_REAL_IP</header1>
            <header2>HTTP_X_FORWARDED_FOR</header2>
        </remote_addr_headers>
    </global>
</config>

Copy the <remote_addr_headers></remote_addr_headers> and close app/etc/modules/local.xml.additional.

The header CloudFlare provides that contains the visitor's actual IP is HTTP_CF_CONNECTING_IP. Therefore we need to add the following to the app/etc/modules/local.xml.

Open app/etc/modules/local.xml and add the <remote_addr_headers></remote_addr_headers> code below inside the <global></global> section as follows:

<config>
    <global>
        <remote_addr_headers>
            <header1>HTTP_CF_CONNECTING_IP</header1>
        </remote_addr_headers>
    </global>
</config>

Kudos to Tall Pall.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.