If Traefik is behind a Cloudflare Proxy/Tunnel, it won't be able to get the real IP from the external client as well as other information.
This plugin solves this issue by overwriting the X-Real-IP and X-Forwarded-For with an IP from the CF-Connecting-IP header.
The real IP will be the Cf-Connecting-IP if request is come from cloudflare ( truest ip in configuration file).
The plugin also writes the CF-Visitor scheme to the X-Forwarded-Proto. (This fixes an infinite redirect issue for wordpress when using CF[443]->PROXY/TUNNEL->Traefik[80]->WP[80])
Supported configurations per body
Setting | Allowed values | Required | Description |
---|---|---|---|
trustip | []string | No | IP or IP range to trust |
disableDefault | bool | Yes | Disable the built in list of CloudFlare IPs/Servers |
One thing included in this plugin is we bundle the CloudFlare server IPs with it, so you do not have to define them manually.
However on the flip-side, if you want to, you can just disable them by setting disableDefault
to true
.
If you do not define trustip
and disableDefault
, it doesn't seem to load the plugin, so just set disableDefault
to false
and you are able to use the default IP list.
experimental:plugins:cloudflarewarp:modulename: github.com/BetterCorp/cloudflarewarpversion: v1.3.0
http:middlewares:cloudflarewarp:plugin:cloudflarewarp:disableDefault: falsetrustip: # Trust IPS not required if disableDefault is false - we will allocate Cloud Flare IPs automatically- "2400:cb00::/32"routers:my-router:rule: Path(`/whoami`)service: service-whoamientryPoints:- httpmiddlewares:- cloudflarewarpservices:service-whoami:loadBalancer:servers:- url: http://127.0.0.1:5000
https://github.com/BetterCorp/cloudflarewarp/tree/master/test
We have written the following tests in this repo:
These tests allow us to make sure the plugin is always functional with Traefik and Traefik version updates.