m2-oh/module-cloudflare

Magento 2 module that integrates Cloudflare cache purging and real-IP resolution.

Maintainers

Package info

github.com/oh-ecommerce-agency/m2-oh-cloudflare

Type:magento2-module

pkg:composer/m2-oh/module-cloudflare

Statistics

Installs: 298

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.3 2023-05-11 10:57 UTC

This package is auto-updated.

Last update: 2026-03-13 12:50:53 UTC


README

A lightweight Magento 2 module that:

  1. Purges Cloudflare cache automatically whenever Magento's cache is flushed (admin panel or CLI).
  2. Resolves real visitor IPs by reading the CF-Connecting-IP header that Cloudflare injects, so Magento logs, rate-limiters, and geo-IP lookups see the actual client address instead of a Cloudflare proxy IP.

Requirements

Dependency Version
PHP ≥ 8.1
Magento 2.4.x
m2-oh/module-core *

Installation

composer require m2-oh/module-cloudflare
bin/magento module:enable OH_Cloudflare
bin/magento setup:upgrade
bin/magento cache:flush

Configuration

Navigate to Stores → Configuration → OH Core → Cloudflare.

Field Description
Enable Cache Purge Master switch. When disabled, no API calls are made.
Account Email The email address associated with your Cloudflare account.
Global API Key Your Cloudflare Global API Key. Stored encrypted.
Zones to Purge Multi-select of zones fetched live from the Cloudflare API.

Tip: Save your email and API key first, then reload the page — the Zones field will populate automatically.

How It Works

Cache Purge

The module listens to three Magento cache events:

Event Trigger
adminhtml_cache_flush_system Admin → Cache Management → Flush Magento Cache
adminhtml_cache_flush_all Admin → Cache Management → Flush Cache Storage
clean_media_cache_after Admin → Flush Media Storage

When any of these events fires and the module is fully configured, Client::purgeAll() calls cachePurgeEverything for each configured zone via API. A success or per-zone failure message is displayed in the admin.

Real IP Resolution

A plugin on Magento\Framework\HTTP\PhpEnvironment\RemoteAddress::getRemoteAddress() replaces the result with $_SERVER['HTTP_CF_CONNECTING_IP'] when present. This is a standard Cloudflare header that is always set when traffic passes through their proxy.