How to use CDN with CloudFlare
This tutorial assumes you have already created a pull zone.
If you plan on using custom domains to pull files from CDN you should setup your CNAME records within CloudFlare DNS editor – not at hosting cPanel end!
What is CloudFlare
CloudFlare is a free system that acts as a proxy between your visitors and our server. By acting as a proxy, CloudFlare caches content for your site, which lowers the number of requests to our servers, but still allows visitors to access your site.
What is CDN
CDN stands for Content Delivery Network, and it works by acting as a reverse proxy that caches all your static contents and serves them to your website visitors from servers spread across the globe, that lowers the number of requests sent to your servers to zero at any given moment as long as the cached files are neither expired nor purged from the network. When the static contents are served to your website visitors from servers that are closer to them than your web server, the website load speed increases which provides a better user experience along with leveraging load off of your web server
The way CloudFlare works includes appending cookies and custom expiry headers that look like this:
sh-4.1$ curl -I domain.com HTTP/1.1 406 Not Acceptable Server: cloudflare-nginx Date: Tue, 14 Aug 2012 14:31:59 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Vary: Accept-Encoding,Cookie,User-Agent Expires: Wed, 15 Aug 2012 14:31:59 GMT Set-Cookie: __cfduid=de8b7126ad3841cd0da33c69651231c901344954719; expires=Mon, 23-Dec-2019 23:50:00 GMT; path=/; domain=.domain.com
When these cookies and headers are sent to our CDN Network, it causes a conflict that prevents us from properly caching your static assets. That results into very low cache hit percentage along with an increased number of requests being sent to CloudFlare, which will negatively affect the load speed of your website.
CloudFlare automatically utilizes a load balancer, which dynamically changes the IP address of your website. While this is usually not an issue, but as our system depends on matching the IP address of the origin website with the FQDN/Domain/URL, it will cause a conflict which will result into our servers unable to fetch and cache your static contents and a 502 Bad Gateway error to occur.
The solution for the first conflict
We have implemented new option within CP3 (Control Panel v3) which ignores the cookie existence on requested file/files. So after CDN pulls file from origin it will ignore the cookie which came along with file and cache the file successfully.
This option is available within the “Settings” tab after you go to “Manage zone” and it’s called “Strip all cookies”. You should select this option and hit UPDATE:
The solution for the Second Conflict
In the past, we used to have Pull Zone 2.0 which utilized Apache Traffic Server to overcome the Dynamic IP problem caused by CloudFlare, Amazon AWS, and any other Load Balancing Technique. Apache Traffic Server had its problems, and lacked support for GZip compression. So we re-invented the Pull Zone to add an option for Dynamic IP Resolution, which is enabled by default when zone is created. However, in case you have setup Origin IP manually down the road you should just un-check “Origin IP Resolution” within your zone settings and Dynamic IP Resolution will be enabled for that zone. Also, you can contact us at firstname.lastname@example.org so we can make sure that Dynamic IP Resolution is definitely enabled for your zone.