Cloudflare proxy
CloudFloorDNS Icon

Blog

How to Proxy Only www Through Cloudflare While Keeping CloudFloorDNS as Your DNS

October 8, 2026
Cloudflare proxy

Cloudflare’s reverse proxy is a popular way to put a CDN, a web application firewall and DDoS protection in front of a website. The catch is the onboarding: Cloudflare’s standard setup asks you to move your nameservers, which hands over your entire DNS zone — mail, verification records, VPN and API hostnames included — just to protect one website.

You don’t have to. On its Business and Enterprise plans, Cloudflare supports a CNAME setup (its documentation also calls it a partial setup): your authoritative DNS stays where it is, and you point only the hostnames you want proxied at Cloudflare. This guide walks through doing that for www, with CloudFloorDNS staying in charge of everything else.

The short version

Add your domain to Cloudflare on a Business or Enterprise plan and convert it to a CNAME setup. Prove ownership with a TXT record at CloudFloorDNS, create a proxied www record in Cloudflare and get its certificate validated, then turn www at CloudFloorDNS into a CNAME pointing at www.example.com.cdn.cloudflare.net. Your nameservers never change.

Why keep your DNS at CloudFloorDNS?

Cloudflare is good at what it does, and so is a dedicated DNS provider. Splitting the jobs gets you a few things an all-Cloudflare setup can’t:

  • Everything else keeps resolving from the network you chose for it. MX, SPF, DKIM, DMARC, VPN, VoIP and API records never pass through Cloudflare.
  • You keep your DNS tooling. DNS Failover, GeoDNS, Secondary DNS, one-click DNSSEC and our API keep working for everything you don’t send to Cloudflare.
  • The off switch isn’t inside the thing you’re switching off. If Cloudflare’s proxy has a bad day, you can send visitors straight to your server with one record change at CloudFloorDNS — more on that below.
  • Leaving is easy. Dropping Cloudflare later is a single DNS edit, not a nameserver migration.

How a Cloudflare CNAME setup works

1 · Lookup

A visitor’s resolver asks CloudFloorDNS for www.example.com. We answer with a CNAME to www.example.com.cdn.cloudflare.net.

2 · Cloudflare edge

That name resolves to Cloudflare’s anycast network, where the request meets the cache, the WAF and Cloudflare’s DDoS protection.

3 · Your server

Anything Cloudflare can’t serve from cache is fetched from your origin, at the address you give Cloudflare in Step 4.

Everything else

The bare domain, mail and every other hostname are answered by CloudFloorDNS as usual and go direct. Cloudflare never sees them.

Things worth knowing before you start

The details a sales page usually leaves out:

It needs Cloudflare Business or Enterprise.

The CNAME setup isn’t offered on Free or Pro — the conversion option simply doesn’t appear. Cloudflare lists Business at $200/month billed annually or $250/month billed monthly (current plans).

The bare domain can’t be a CNAME.

DNS doesn’t allow a CNAME at the zone apex, so example.com can’t point at Cloudflare the way www does. You’ll send it to www instead; Step 8 covers the options.

Only what you point at Cloudflare is proxied.

Cloudflare handles exactly the hostnames you CNAME to it. That includes DNS itself: Cloudflare’s DNS-layer DDoS protection only applies when it runs your nameservers, so here your DNS stays on CloudFloorDNS’s DDoS-protected network.

Your origin address moves into Cloudflare.

After the switch, the www record in Cloudflare’s dashboard decides where traffic goes. When you move servers, update it there, not at CloudFloorDNS.

Some records are permanent.

Cloudflare’s cloudflare-verify TXT record has to stay in your zone for as long as you use the setup, and so does the _acme-challenge CNAME if you choose delegated certificate validation in Step 5.

Cloudflare Registrar domains are excluded.

Domains registered at Cloudflare can’t use a CNAME setup. Registered with us or with any other registrar? You’re fine.

Step-by-step: proxy www through Cloudflare

Throughout this guide, example.com stands in for your domain and 203.0.113.10 for your web server’s IP address. Each step is labeled with where you’ll be working.

1
At CloudFloorDNS

Note your current www record and lower its TTL

Open the zone for example.com in the CloudFloorDNS control panel and find the www record. Write down its value: that’s your origin, and it’s also your way back. Then lower its TTL to 600 seconds (10 minutes) and wait at least as long as the old TTL before you continue, so the change in Step 7 takes effect quickly.

If www is already a CNAME to a hosting provider (something like yoursite.hostingco.net), note that hostname instead. You’ll use it as the origin in Step 4.

2
In Cloudflare

Add the domain and convert it to a CNAME setup

Add example.com to your Cloudflare account and choose the Business (or Enterprise) plan. Cloudflare scans your existing records and then tells you to change your nameservers. Ignore the nameserver instructions.

On the domain’s Overview page, select Convert to CNAME DNS Setup and confirm with Convert. Cloudflare then shows a Verification TXT Record. Copy it; if you lose it, it’s also listed on the DNS Records page.

3
At CloudFloorDNS

Prove you own the domain

Add the verification record to your zone:

Name Type Data TTL
cloudflare-verify TXT The value Cloudflare shows you, e.g. 966215192-518620144 3600

Type just cloudflare-verify in the name column; the panel adds your domain for you. Cloudflare checks for the record and emails you when the zone is active, which can take up to a few hours. To confirm the record is being served:

dig +short TXT cloudflare-verify.example.com

Leave this record in place permanently. Cloudflare uses it to keep confirming you control the zone.

4
In Cloudflare

Create the proxied www record

Go to DNS → Records and make sure there’s a record for www pointing at your origin, with the proxy turned on (orange cloud, Proxied):

Type Name Content Proxy status
A www 203.0.113.10 Proxied
AAAA (only if your server has IPv6) www 2001:db8::10 Proxied

If your host gives you a hostname rather than an IP address, create a proxied CNAME for www pointing at that hostname instead. Don’t point it at anything that resolves back through Cloudflare, such as your bare domain.

Then delete everything else the scan imported. Cloudflare isn’t answering DNS for your domain in this setup, so those copies do nothing for visitors, and if a proxied CNAME ever points at one of them, Cloudflare uses its own stale copy instead of asking CloudFloorDNS. Keep this zone to the hostnames you proxy.

5
In Cloudflare and at CloudFloorDNS

Get the edge certificate issued before you switch

Cloudflare includes a free Universal SSL certificate, but on a CNAME setup it can’t validate the certificate automatically until traffic is already flowing through Cloudflare — unless you add validation records at your DNS provider first. Switch DNS before the certificate is active and HTTPS visitors can see certificate errors until it completes; Cloudflare’s own documentation says HTTP validation is only for sites that can tolerate a few minutes of downtime. For a live site, validate through DNS first. There are two ways:

Recommended for live sitesAdvanced certificate with delegated validation

Add Advanced Certificate Manager (listed at $10/month) and order an advanced certificate for example.com and *.example.com, choosing TXT as the validation method. Then, on SSL/TLS → Edge Certificates, find DCV Delegation for Partial Zones, copy the validation URL and add one record at CloudFloorDNS:

Name Type Data
_acme-challenge CNAME example.com. followed by the validation URL Cloudflare shows, ending in a dot

From then on Cloudflare validates and renews on its own, and the wildcard covers any other hostname you proxy later. Two things to know: remove any existing _acme-challenge TXT records first, because they block delegation; and since only one provider can hold the delegation, DNS-based certificate validation for the same names elsewhere (a certbot DNS plugin on your server, for example) stops working. HTTP-based validation isn’t affected.

No extra costUniversal SSL, validated with a TXT record

Check SSL/TLS → Edge Certificates. If a pending Universal certificate for www lists a certificate validation TXT name and value, add that TXT record at CloudFloorDNS (the name will look like _acme-challenge.www). If it’s set to a different method, switch it to TXT; for Universal certificates Cloudflare only allows that through its API. You’ll need your zone ID (on the Overview page) and an API token with the SSL and Certificates: Edit permission for the zone:

CF_API_TOKEN="your-api-token"
ZONE_ID="your-zone-id"
API="https://api.cloudflare.com/client/v4/zones/$ZONE_ID"

# 1. Find the Universal certificate pack that covers www
curl -s "$API/ssl/certificate_packs?status=all" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  | jq '.result[] | {id, type, hosts, status}'

# 2. Switch that pack to TXT validation
CERT_PACK_ID="id-from-step-1"
curl -s -X PATCH "$API/ssl/verification/$CERT_PACK_ID" \
  -H "Authorization: Bearer $CF_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"validation_method":"txt"}'

Once the certificate shows Active, you can delete the TXT record. At renewal time (30 days before expiry) Cloudflare tries HTTP validation automatically; if that can’t complete, it falls back to TXT and you’ll need to add fresh values from Edge Certificates. The delegated route above avoids that chore entirely.

If no certificate is listed at all, Cloudflare issues it after traffic starts arriving. In that case, make the Step 7 switch at a quiet hour and expect a few minutes of certificate errors for HTTPS visitors.

6
In Cloudflare

Use Full (strict) and test before you switch

Under SSL/TLS → Overview, make sure the encryption mode is Full (strict), so Cloudflare connects to your server over HTTPS and checks its certificate. If the zone uses Automatic SSL/TLS, it picks the most secure mode your origin supports; choose Custom to set it yourself. Avoid Flexible: it leaves the Cloudflare-to-server leg unencrypted and causes redirect loops on sites that already force HTTPS.

You can now send a request through Cloudflare without touching DNS:

# Pin www.example.com to a Cloudflare edge address for this one request
CF_IP=$(dig +short www.example.com.cdn.cloudflare.net | head -n1)
curl -sI --resolve www.example.com:443:$CF_IP https://www.example.com \
  | grep -iE '^(HTTP|server|cf-ray)'

You’re looking for a normal status code, server: cloudflare and a cf-ray header. A TLS error means the edge certificate isn’t active yet (on the quiet-hour route from Step 5, add -k to test everything else). A 5xx error means Cloudflare can’t reach your server, so check the address from Step 4 and your firewall.

7
At CloudFloorDNS

Point www at Cloudflare

Change the www record from its A/AAAA value into a CNAME:

Name Type Data TTL
www CNAME www.example.com.cdn.cloudflare.net. 600

Keep the trailing dot: the target is outside your zone, so it’s entered as a full name ending in a dot. A CNAME can’t share its name with other records, so remove anything else at www too, such as an AAAA record or an old TXT verification record.

Make it one edit, not two.

Turn the existing www row into the CNAME (or add the CNAME and remove the old records in the same save) rather than deleting first and coming back later. A resolver that asks while www doesn’t exist can cache “no such name” for your zone’s negative-caching time.

Within roughly the TTL you set in Step 1, visitors to www are flowing through Cloudflare.

8
At CloudFloorDNS

Send the bare domain to www

Because example.com can’t be a CNAME, decide what happens when someone types it. In order of preference:

  • Redirect it at CloudFloorDNS. Add an REDIRECT:// record with the name left blank and https://www.example.com as the data. Our forwarding servers answer for the bare domain and send visitors to www, so your server’s IP doesn’t appear on the bare domain at all. An aux value of 10 keeps the path (example.com/pricing → www.example.com/pricing); once you’ve tested it, 12 makes it a permanent 301. For visitors who type https:// in front of the bare domain, the forwarder also needs a certificate for it: our Secure Branding and Forwarding plans include automatic Let’s Encrypt certificates, or ask support what your plan covers.
  • Proxy it through Cloudflare too. Cloudflare can proxy the apex in a CNAME setup when your DNS provider can flatten it, which is what an ALIAS record does. Add an ALIAS record with the name left blank pointing to example.com.cdn.cloudflare.net., add a proxied example.com record in Cloudflare, and create a Redirect Rule there that sends it to www. Make sure your edge certificate covers example.com as well.
  • Redirect on your own server. Keep the apex A record pointing at your server and redirect to www there. It’s the simplest option, but it publishes your server’s IP, sends bare-domain visitors around Cloudflare, and stops working if you lock your server down to Cloudflare’s addresses in Step 10.
9
From any terminal

Verify everything

# Ask your authoritative nameservers directly
NS=$(dig +short NS example.com | head -n1)
dig +short www.example.com CNAME @$NS   # expect www.example.com.cdn.cloudflare.net.
dig +short MX example.com @$NS          # unchanged

# Requests to www should come back from Cloudflare
curl -sI https://www.example.com | grep -iE '^(server|cf-ray)'

# The bare domain should redirect to www
curl -sI https://example.com | grep -i '^location'

Then check mail flow and any other hostnames you care about. They should behave exactly as before, because nothing about them changed.

10
On your server

Lock down the origin and log real visitor IPs

Cloudflare only protects traffic that goes through it. Anyone who learns your server’s address can still reach it directly, so finish with three checks:

  • Accept web traffic only from Cloudflare. Restrict ports 80 and 443 to Cloudflare’s published IP ranges, or turn on Authenticated Origin Pulls so your server only accepts connections that present Cloudflare’s client certificate.
  • Look for records that give the address away. Hostnames such as ftp, cpanel or direct that point at the same server publish its IP. Move those services or accept the exposure knowingly.
  • Restore visitor IPs in your logs. Your server now sees Cloudflare’s addresses. Cloudflare passes the original visitor IP in the CF-Connecting-IP header; configure mod_remoteip (Apache) or the real_ip module (nginx) to trust that header from Cloudflare’s ranges only.

Your escape hatch when Cloudflare has a bad day

This is the quiet advantage of keeping DNS at CloudFloorDNS. On November 18, 2025, Cloudflare’s network failed to deliver core traffic for roughly three hours, and for parts of the incident most customers couldn’t log in to the Cloudflare dashboard (Cloudflare’s postmortem). When your nameservers are at Cloudflare, the controls you’d use to route visitors around it are part of the same platform. With CloudFloorDNS, it’s one record:

Situation Name Type Data
Normal www CNAME www.example.com.cdn.cloudflare.net.
Cloudflare outage www A 203.0.113.10

For that switch to work when you need it:

  • Your server needs a publicly trusted certificate, such as one from Let’s Encrypt. A Cloudflare Origin CA certificate is only trusted by Cloudflare, so browsers would reject it the moment you bypass.
  • Your firewall has to let visitors in. If you limited ports 80 and 443 to Cloudflare in Step 10, keep a ready-made rule to open them.
  • Keep the www TTL modest. Somewhere around 10 to 30 minutes balances DNS query volume against how quickly the switch takes hold.
  • Your server will be on its own, with no CDN cache and no Cloudflare WAF until you switch back, so make sure it can carry the load.

Rather not make that change by hand in the middle of the night? Our DNS Failover service can monitor the site and switch records for you; ask us about setting it up for a Cloudflare-fronted hostname.

Records at a glance

When you’re done, this is where everything lives:

Where Name Type Value Notes
CloudFloorDNS cloudflare-verify TXT From Cloudflare Keep permanently
CloudFloorDNS www CNAME www.example.com.cdn.cloudflare.net. Replaces the old A/AAAA
CloudFloorDNS _acme-challenge CNAME example.com. plus Cloudflare’s validation URL Delegated validation only; keep permanently
CloudFloorDNS _acme-challenge.www TXT From Cloudflare Universal + TXT only; delete once issued
CloudFloorDNS (blank) REDIRECT:// or ALIAS https://www.example.com or example.com.cdn.cloudflare.net. See Step 8
CloudFloorDNS MX, SPF, DKIM, DMARC, everything else — Unchanged Never touches Cloudflare
Cloudflare www A / AAAA, proxied 203.0.113.10 Your origin; update it here when you move servers

Frequently asked questions

Does my email go through Cloudflare?

No. MX, SPF, DKIM and DMARC records stay at CloudFloorDNS and resolve directly. Only hostnames you CNAME to Cloudflare are proxied.

Can I proxy other hostnames later?

Yes. Repeat Steps 4 through 7 for each one (shop or app, say): add a proxied record in Cloudflare, make sure the certificate covers it, then CNAME it to shop.example.com.cdn.cloudflare.net. at CloudFloorDNS. The wildcard advanced certificate from Step 5 covers new subdomains automatically.

What happens to DNSSEC?

Nothing changes. Your zone stays signed at CloudFloorDNS, and the www CNAME is signed along with everything else. Cloudflare doesn’t need your keys or a DS record in a CNAME setup.

I’m on Cloudflare Free or Pro. What are my options?

Cloudflare only offers the CNAME setup on Business and Enterprise, so on Free or Pro the proxy comes with moving your nameservers. If you go that way, plan for redundancy: a classic secondary behind Cloudflare depends on Cloudflare’s outgoing zone transfers, which it limits to Enterprise. We can talk you through a dual-primary alternative.

How do I undo it?

Change www at CloudFloorDNS back to an A record pointing at your server. Once the TTL passes, traffic goes direct again, and you can remove the domain from Cloudflare along with the cloudflare-verify and any _acme-challenge records.

Related guides

Keep your DNS independent. Put Cloudflare where it helps.

CloudFloorDNS is run by a team with more than 25 years in DNS, on a DDoS-protected network backed by a 100% uptime SLA. Keep your zone with us, proxy the hostnames that benefit, and keep control of everything else.

Questions about a Cloudflare CNAME setup? Email support@cloudfloordns.com or sales@cloudfloordns.com, or call +1 781 373 5823.

Cloudflare is a trademark of Cloudflare, Inc. CloudFloorDNS is not affiliated with, sponsored by or endorsed by Cloudflare. Plan names, prices and dashboard steps reflect Cloudflare’s published documentation as of October 2026 and may change; check Cloudflare’s docs before you start.