CDN řešení

Technicka podpora
2019-05-28 12:27

Co je CDN

Při návštěvě webové aplikace zákazníkem musí prohlížeč stáhnout všechny soubory na které navštěvovaná stránka odkazuje, v případě, že je zákazník od Vašeho webového serveru vzdálen, může díky tomu docházet k velké prodlevě při načítaní webu.

Naše CDN má rozmístěny v různých lokacích cache servery a pokud CDN použijete, nemusí zákazníci stahovat statický obsah z Vašeho vzdáleného web serveru, ale jsou obslouženi z cache serveru který je k nim umístěný mnohem blíže a načtení webu je díky tomu mnohem rychlejší.

Hlavní výhody CDN spočivají tedy v:

  • Rychlejším načítaní webu pro zakazníky.
  • Snížení zatěže Vašich webových serverů.
  • Částečné ochraně před DDoS útoky.

 

Lokace

K dispozici máme nyní lokace Evropa, USA a Globalní. U evropy se jedná o dvě lokality v Praze a jednu lokalitu v Londýně, v případě USA poté o New York a Los Angeles.

 

Zprovoznění služby

  • Při vytvoření služby CDN je Vám předána CDN doména přes kterou je nutné směrovat načítaní statického obsahu, například pokud budete chtít využívat CDN pro web example.com, bude Vám vytvořena doména example.vshcdn.net.
  • Programátoři na webu upraví odkazy na statický obsah, nahradí example.com za example.vshcdn.net.
  • CDN se již sama díky anycast technologii a specialně nakonfigurovaným DNS serverům postará o to, aby prohlížeč uživatele webu stahoval statický obsah vždy z nejbližšího serveru.

 

Seznam IP adres serverů

V současné době může CDN načítat obsah z Vašich serverů z následujích ip:

93.185.110.99/32
93.185.110.100/32
93.185.110.101/32
185.198.191.147/32
204.145.66.226/32
204.145.66.158/32
77.81.119.26/32
86.105.155.150/32
185.115.0.0/24

Případně následujících IPv6 adres:

2a02:5420:1:0:185:115:0:4/48
2a05:91c0:504::4571/128
2a00:1d70:ffff:ffff:ffff:ffff:ffff:1/128
2a00:1ed0:0:213::11/128
2a00:1ed0:0:213::12/128
2a00:1ed0:0:213::13/128
2a0a:54c0:0:34::2/128
2001:1980:5102:ea82::2/128

IP adresy se můžou časem měnit, seznam ip můžete také získavat pomocí GET požadavku na url seznamu IP adres serverů, v tomto případě Vám bude vrácen seznam ip adres, kde použitý oddělovač je '\n' (nový řádek). Oba seznamy naleznete na následujících odkazech: IPv4 a IPv6

 

Získání IP adresy návštěvníka

Abyste mohli zjistit IP návštěvníka, proxy server vyplní návštěvníkovu IP do hlavičky "CDN-VSHOSTING-Real-IP". Je však nutné, aby jste webový server nakonfigurovali tak, aby této hlavičce důvěřoval pouze v případě, pokud je požadavek proveden z ip proxy serveru, seznam ip je uveden výše. 

Konfigurace může vypadat následovně:

nginx:

set_real_ip_from 93.185.110.99;
set_real_ip_from 93.185.110.100;
set_real_ip_from 93.185.110.101;
set_real_ip_from 185.115.0.0/24
set_real_ip_from 204.145.66.224;
set_real_ip_from 204.145.66.156;
set_real_ip_from 185.198.191.147;
set_real_ip_from 204.145.66.226;
set_real_ip_from 204.145.66.158;
set_real_ip_from 77.81.119.26;
set_real_ip_from 86.105.155.150;
real_ip_header CDN-VSHOSTING-Real-IP;

 apache: 

RPAFenable On
RPAFproxy_ips 93.185.110.99 93.185.110.100 93.185.110.101 185.115.0.0/24 204.145.66.224 204.145.66.156 185.198.191.147 204.145.66.226 204.145.66.158 77.81.119.26 86.105.155.150 RPAFheader CDN-VSHOSTING-Real-IP

 Zjištení ip adresy v php:

function get_realip() {
	$real_ip = $_SERVER[REMOTE_ADDR]
	$cdn_ip = array("93.185.110.99", "93.185.110.100", "93.185.110.101", "204.145.66.224", "204.145.66.156", "185.198.191.147" "204.145.66.226", "204.145.66.158", "77.81.119.26", "86.105.155.150"); if (in_array($_SERVER[REMOTE_ADDR], $cdn_ip)) { $real_ip = $_SERVER[HTTP_CDN_VSHOSTING_REAL_IP]; } return $real_ip; }

 

Nastavení doby cachování

K nastavení doby po kterou je obsah nacachován je možné využít hlavičky "Cache-Control" a "Expires", "Cache-Control" má širší možnosti nastavení.

Pokud budete chtít cachovat obsah po dobu maximalně 10 minut je potřeba nastavit hlavičku Cache-Control nasledovně:

"Cache-Control: public, max-age=600"

Poté můžeme do .htaccess a nebo přímo do konfigurace virtualhostu v apache vložit nasledující konfiguraci:

<FilesMatch "\.png$">
Header set Cache-Control max-age=3600
</FilesMatch>

Díky tomuto nastavení, bude CDN cachovat png soubory po dobu maximalně jedné hodiny, po vypršení této doby si CDN při dalším dotazu ověří zda došlo ke změně souboru.

 

Přidání hlavičky Cache-Control - php

Pro nastavení hlavičky Cache-Control použijeme funkci header:

header("Cache-Control: max-age=600");

Funkci header je potřeba zavolat ještě předtím, než odešlete jakýkoli obsah, funkci je tedy potřeba v kódu volat co nejdříve.

Průměrné hodnocení: 5 (8 hlasů)

K tomuto záznamu nemůžete připojit komentář.