Mise en place et configuration du service CDN avec ovh
mardi 14 mai 2019Un CDN (Content Delivery Network) est un ensemble de serveur situés dans des endroits différents dnas le monde et mis en réseau sur internet.
Ce service permet de deployer des fichiers statiques (comme les images / js / css) sur ces différents serveurs afin de soulager le serveur qui
héberge le site internet et permet aussi d’améliorer les performances de votre site internet.
Enfin cela permet de réduire les coûts de la bande passante du serveur hébegeur et se charge aussi de délivrer les informations à l’utilisateur via le serveur (noeud) le plus proche de celui-ci.
Par exemple un chinois qui arrive sur votre site hébergé en France par exemple, pourra bénéficier de vos images depuis un serveur en chine. Du coup, le temps de chargement de la page sera plus rapide pour l’utilisateur.
Vous avez compris, il peut être très interessant de recourir à ce type de service sur votre hébergement pour améliorer vos performances au niveau de votre site internet.
Dans mon cas, nous avons utilisé cette solution pour améliorer le référencement de notre site qui exige des temps de réponse de chargement le plus bas possible.
Configuration
Nous allons voir ici comment mettre en place ce service depuis le fournisseur CDN de chez ovh.
Une fois le service acheté chez ovh vous trouverez sous l’onglet Dédié de votre compte manager un menu NAS ET CDN.
Vous demandez à ajouter un domaine au cdn.
Vous choisissez alors un sous domaine de votre domaine qui sera à utiliser sur votre site pour rediriger les fichiers statiques.
exemple: cdn.example.com
Vous allez y référencer l’adresse ip de votre serveur d’hébergement.
Après quelques instants, votre nom de domaine sera disponible dans l’espace client et vous pourrez effectuer sa configuration.
Maintenant, vous devez configurer ce sous domaine dans votre dns avec l’attribut CNAME.
exemple:cdn.example.com CNAME cdn.example.com.web.cdn.anycast.me
Enfin, il faut créer votre virtualhost dans Apache ou via plesk par exemple avec le sous domaine cdn.example.com qui pointe sur votre site.
Vérifier que l’url https://cdn.example.com/ retourne bien votre site.
Maintenant, dans le manager d’ovh vous pouvez configurer les règles de caches soit sur des extensions / fichiers / dossier de fichiers statiques que vous souhaitez partager au cdn.
Attention sur ovh il faut donner le chemin relatif de votre site internet en se basant sur le path de votre ftp ex: /httpdocs/sites/all/themes/ en drupal
Il faut aussi préciser à Apache que ces fichiers statiques sont en caches pour le cdn.
Pour celà, ajouter le code suivant dans le fichier htaccess:
# Cache des images durant 1 semaine <FilesMatch "\.(jpg|jpeg|png|gif)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> # Cache des javascript et CSS durant 1 mois <FilesMatch "\.(js|css)$"> Header set Cache-Control "max-age=604800" </FilesMatch>
Attention: La mise en cache via les headers HTTP permet la mise en cache au sein du CDN mais aussi au sein du navigateurs de vos utilisateurs. Ainsi, pour éviter que vos client ne bénéficient d’une version en cache trop longtemps, il est recommandé de modifier les noms de fichiers à chaque nouvelle version.
Une fois ces règles en place vous pouvez faire un dernier test via curl pour tester le cache de ces fichiers:
curl -I https://cdn.example.com/
Il faudra avoir la ligne X-Cacheable: Matched cache et il faut faire plusieurs test car le premier client met en cache
Maintenant, il ne reste plus que changer toutes les urls de fichiers statiques vers le cdn.
Si comme moi vous travaillez sur drupal, il existe un module tout fait pour cela:
https://www.drupal.org/project/cdn
Concernant sa configuration c’est tout simple, il faut enabled le module et dans la configuration de celui-ci et aussi activé CDN support https et ajouter ceci dans le champs cdn mapping for https
https://cdn.example.com|.css .js .jpg .jpeg .gif .png
Et voilà le tour est joué, vous pouvez aussi dans le manager d’ovh observé via le graphe si les requêtes se font plus sur le cdn que sur votre serveur maintenant.