Přeskočit obsah

Cdn řešení

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ě, Madridu a Bukurešti. V případě USA poté o New York.

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
77.81.119.26/32
86.105.155.150/32
185.115.0.0/24
77.247.124.1/32
46.243.53.13/32

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

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
2a02:5420:1::/48
2a00:1ed0:3:1::6/128
2a00:1ed0:3:2::6/128
2a00:1ed0:3:3::6/128
2001:1980:5102:ea84::6/128
2a05:91c0:504:4571::11/128
2a00:1d70:a002::11/128
2a0a:54c1:28::6/128
2a0a:54c1:29::6/128
2a00:1ed2:1::13:1/128
2a00:1ed0:3:1::101/128
2a00:1ed0:3:2::101/128
2a00:1ed0:3:3::101/128
2001:1980:5102:ea84::101/128
2a0a:54c1:28::101/128
2a0a:54c1:29::101/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.

GeoIP mode

Nastavením GeoIP módu můžeme omezit přístup webu prostřednictvím CDN na státy, které buď povolíme či zakážeme. GeoIP mód funguje buď v režimu Blacklistu nebo v režimu Whitelistu.
Po výběru režimu můžeme v dropdown menu vybírat, které státy chceme blokovat, či naopak povolit. Je možné zvolit více států.

Remote Log

Přístupové logy z CDN je možné odesílat na vzdálený server k vlastní analýze. Prozatím je možné využít pouze syslog. Toto lze nastavit v administraci CDN specifikováním pole Remote Log. Do tohoto je potřeba napsat "syslog://1.2.3.4" (1.2.3.4 nahraďte IP adresou serveru, na který chcete logy odesílat. Je možné použít i Hostname). Logy poté by default chodí na UDP port 514 serveru, který jste specifikovali.

Autokonverze do WebP

Tato funkce umožňuje převádět soubory .bmp, .png, .jpg a .jpeg (respektive soubory odpovídající tomuto regulárnímu výrazu ".(?:bmp|png|jpg|jpeg)$" ) do formátu webp pro distribuci prostřednictvím CDN. Více informací o tomto formátu můžete nalézt např. zde: https://en.wikipedia.org/wiki/WebP . Podpora WebP prohlížečem je detekována pomocí hlavičky Accept-Encoding. Prohlížečům, které tuto technologii nepodporují je poslán obrázek v původním formátu. Po zapnutí této funkce je nutné minimálně hodinu počkat, než budou zkonvertované soubory dostupné. S tímto též souvisí nastavení hlavičky Cache-Control nebo Expires, které musí být minimálně na jednu hodinu. Lze také nastavit pomocí nastavení Forced cache v administraci CDN a to opět minimálně jednu hodinu (3600 vteřin). Pokud jsou v CDN obrázky již nacachované, tak je nutné je z CDN nejprve odstranit, aby se mohla konverze provést. viz. Cache Control. Konverzi lze vypnout přidáním argumentu vshcdn-webp-noautconvert=1 do URL, nebo nastavením hlavičky VSHCDN-WEBP-NOAUTOCONVERT=1 na backendu.

Při použití této funkce jsou následovány redirecty interně v CDN a obrázek je vrácen klientovy s původní url, v případě, že potřebujete opačné chování nás prosím kontaktujte pomocí ticketu s informací, pro kterou doménu si přejete danou funkcionalitu přenastavit.

Cache Control

Nově je možné prostřednictvím administrace CDN odstranit nacachovanou URL z CDN. Na záložce Vašich domén se nachází u každé domény možnost Cache control. Po jejím rozkliknutí se Vám nabídne možnost odstranit veškerý nacachovaný obsah dané domény "Remove everything" a možnost odstranit jednotlivou URL. URL je třeba zadávat ve tvaru "https://testujutestuju.vshcdn.net/url/ke/smazani". Pokud máte nastaven CDN Doménový Alias, pak je nutné zadat i aliasovou URL, tedy: "https://testuju.cz/url/ke/smazani" . Je zde možné použít i wildcard * ale pouze na konci URL. Chceme-li tedy odstranit např. všechny obrázky z nějaké složky, zadáme URL "https://testuju.cz/složka/s/obrazky/*" . Také je nutné správně specifikovat protokol a ke kompletnímu odstranění je tedy potřeba zadat jak URL variantu http:// tak variantu https://.

Access Log

V historii přenesených dat se nově nachází položka Access Log a GoAccess. Možnost Access Log Vám umožní stáhnout Access Log za zvolené období v textovém formátu. Možnost GoAccess umožňuje zobrazit data z access logu již zanalyzovaná aplikací GoAccess a to přímo ve webovém prohlížeči.