Pro modernizaci webových serverů je klíčový přechod na nejnovější webové standardy, jako je HTTP/3. Tento standard nabízí nejen vyšší bezpečnost a snadnější konfiguraci, ale také rychlejší načítání stránek a lepší odolnost vůči ztrátám paketů. Zjistěte, jak můžete tyto výhody využít s Caddy – moderním webovým serverem, který je připraven na HTTP/3.
Představení moderního internetového protokolu HTTP/2
HTTP/2 je významným vylepšením oproti svému předchůdci, HTTP/1.1. Tento protokol byl standardizován v roce 2015 a přinesl několik klíčových vylepšení pro zvýšení efektivity a výkonu webové komunikace.
Mezi hlavní vlastnosti HTTP/2 patří:
Binární protokol: Na rozdíl od textového protokolu HTTP/1.1 je HTTP/2 plně binární, což znamená, že komunikace mezi klientem a serverem je efektivnější a méně náchylná k chybám interpretace.
Multiplexing: HTTP/2 umožňuje odesílat a přijímat několik zpráv současně přes jedno TCP spojení. To eliminuje problém takzvaného „head-of-line blocking“, který se vyskytoval v HTTP/1.1, kde musely být požadavky zpracovány v pořadí, v jakém byly přijaty.
Prioritizace požadavků: HTTP/2 umožňuje klientům specifikovat prioritu pro jednotlivé požadavky, což umožňuje serveru lépe optimalizovat zpracování a odesílání dat.
Komprese hlaviček: HTTP/2 zavádí efektivnější metodu pro kompresi hlaviček HTTP požadavků a odpovědí, což snižuje celkové množství přenášených dat.
Server Push: Tato funkce umožňuje serveru aktivně odesílat zdroje klientovi předtím, než o ně klient explicitně požádá, což může zlepšit časy načítání stránek.
Představení moderního internetového protokolu HTTP/3
HTTP/3 je nejnovější evolucí protokolu HTTP, přinášející zásadní vylepšení oproti svým předchůdcům. Tento protokol, postavený na základech QUIC, nabízí nejen rychlejší načítání a vyšší odolnost proti ztrátám paketů, ale také zlepšuje bezpečnost a spolehlivost. Klíčovým prvkem HTTP/3 je šifrování nejen samotných dat, ale i metadat, která byla dříve posílána otevřeně. Tato vlastnost poskytuje ochranu proti odposlechu a manipulaci s daty, což zvyšuje bezpečnost přenosu.
Webových serverů, které umožňují používání tohoto protokolu zatím není mnoho. Jedním z nejlepších je Caddy.
Srovnávací tabulka protokolů HTTP/1.1, HTTP/2 a HTTP/3
Vlastnost | HTTP/1.1 | HTTP/2 | HTTP/3 |
Transportní protokol | TCP | TCP | QUIC přes UDP |
Multiplexing | Ne | Ano (Binární rámcová vrstva) | Ano (Binární rámcová vrstva) |
Server Push | Ne | Ano | Ano (podobně jako HTTP/2, ale s rámci jako PUSH_PROMISE, MAX_PUSH_ID a CANCEL_PUSH) |
Komprese hlavičky | Ne | HPACK | QPACK (umožňuje samostatné jednosměrné proudy pro správu stavu) |
Šifrování | Volitelné (často s TLS) | Zpravidla TLS, s výjimkou h2c a hlaviček | Povinné (integrované s QUIC), včetně metadat |
Odolnost proti Změnám Sítě | Ne | Ne | Ano |
Jak nainstalovat moderní webový server Caddy
Instrukce pro různé OS naleznete v dokumentaci: https://caddyserver.com/docs/install
Níže uvedu příkaz, který vám nainstaluje nejnovější caddy na systému Debian
Caddy: Moderní a Efektivní Webový Server
Caddy je webový server nové generace, který se vyznačuje snadnou konfigurací, automatickým nasazením SSL/TLS certifikátů přes Lets Encrypt a plnou podporou moderních protokolů HTTP/2 i HTTP/3. Není potřeba žádný certbot, Caddy se o certifikáty postará sám. Caddy překonává technologický dluh tradičních serverů, jako jsou Apache a Nginx, a nabízí modernější a efektivnější přístup. Caddy je napsaný v jazyce GO na zelené louce. A je to asi nejkomfortnější webový server, který se můžete naučit.
Caddyfile – jednoduchá konfigurace webového serveru v jediném souboru
Caddy umožňuje používání api, kterému se zatím nebudeme věnovat, protože s tím nemám zatím zkušenosti. Dále umožňuje konfiguraci v jsonu či v jednodušším Caddyfile, který se jsonu trošku vizuálně podobá. Pro správu veškerých webů vám stačí jeden Caddyfile (/etc/caddy/Caddyfile). Tento přístup mému použití plně vyhovuje.
Základní konfigurace HTTP/2 a HTTP/3 v Caddyfile, na začátek souboru dáme následující blok:
Další věc, která se mi na Caddy web serveru líbí, je logování, které může být strukturované v jsonu. Logování se budeme věnovat v sekci Caddyfile a snippety.
Caddy má skvělou dokumentaci, kterou při vytváření webů doporučuji používat: https://caddyserver.com/docs/caddyfile#the-caddyfile
Caddyfile a snippety
Snippety jsou znovupoužitelné bloky kódu, abychom se nemuseli opakovat. Říkal jsem, že se mi na Caddy webserveru líbí logování? Tak takhle vypadá můj logovací snippet:
Logovací snippet
Jak je vidět, jméno snippetu je v závorkách a ve složených závorkách je k němu jeho nastavení.
Snippety se do konfigurace poté importují přes import.
Jednoduché přihlášení
Caddy podporuje jednoduché přihlášení (Basic Auth), tak jako apache, ale trošku jiným způsobem. Nepoužívá .htpasswd soubory. Nyní si ukážeme, jak vypadá snippet s přihlášením.
Hash hesla získáme příkazem
yes 'heslo123'|caddy hash-password
$2a$14$Z7r89DNih.WfqMbw9K/vkuSfp7pQi10ws1MND4KsktZ1hbJtOCFNK
Code language: PHP (php)
Případně postačí jen hash-password a interaktivně zadat heslo a jeho potvrzení (to je bezpečnější).
Snippety pro přesměrování z www na holou doménu a obráceně
Moderní komprese Zstandard a Brotli v Caddy
Kompresní algoritmy zstd a brotli jsou skvělé pro webové stránky hlavně z několika důvodů:
Efektivita Kompresního Poměru:
Brotli: Vyvinutý Googlem, je obzvláště efektivní pro textová data jako HTML, CSS a JavaScript. Brotli poskytuje výrazně lepší kompresní poměr než jeho předchůdci (např. gzip), což znamená menší velikost souborů a rychlejší načítání stránek.
Zstd: Vyvinutý Facebookem, zstd (Zstandard) je také velmi efektivní v kompresi a má vynikající rychlosti komprese a dekomprese. Zvláště se hodí pro velké soubory a nabízí lepší kompresní poměry než tradiční metody, jako je gzip.
Rychlost Kompresního Algoritmu:
Brotli: Kromě vysokého kompresního poměru je brotli také optimalizován pro rychlost, což znamená, že komprese a dekomprese probíhají rychle, minimalizují zatížení serveru a zkracují čas načítání stránek pro uživatele.
Zstd: Rychlost je klíčová vlastnost zstd. Je navržen tak, aby byl rychlý jak při kompresi, tak dekompresi, což znamená efektivnější zpracování na serverech a rychlejší načítání pro klienty.
Široká Podpora a Kompatibilita:
Brotli je dobře podporován v moderních prohlížečích a má širokou kompatibilitu, což z něj činí bezpečnou volbu pro webové stránky.
Zstd se stává čím dál tím více populárním a je podporován v mnoha systémech a aplikacích.
Využití v Caddy Webserveru:
Caddy umožňuje používání těchto kompresí pro předkomprimované soubory, což znamená, že webový server může efektivně spravovat komprimovaný obsah bez dodatečného zatížení během každého požadavku. To vede k optimalizaci výkonu a snížení nákladů na šířku pásma.V kombinaci tyto faktory přinášejí výrazná vylepšení ve výkonu a efektivitě pro webové stránky, zejména v prostředích, kde je optimalizace šířky pásma a rychlosti načítání kritická. Komprese za běhu – nepředkomprimovaných souborů je možná do ZSTD a do GZIPu. Komprese předomprimovaných souborů je možná do brotli, zstd, i gzipu. Pro aplikaci předkomprese je nutné nejen zapnout precompressed ve file_server v Caddyfile, ale i nahrát předkomprimované soubory vedle nekomprimovaných do root složky vašeho webu. Nebojte se, že by předkomprimované soubory caddy znovu komprimoval, jako je to běžné například při neoptimálním nastavení webserveru Apache.
Snippet pro statické stránky s podporou komprese zstandard, brotli a gzip:
Všiměte si, že v rámci tohoto snippetu importuji snippet loging a www_redirection. Snippety mohou obsahovat jiné snippety. Pokud máte hodně skupin webů, které jsou podobné – třeba více statických webů, weby, kde caddy bude fungovat jako reverzní proxy (pro transmission, cockpit, shellinabox, pihole …) a weby s php atd, tak se hodí mít pro každý typ vhodný snippet.
Nyní si vytvoříme první web:
exampledomain.cz, www.exampledomain.cz {
import shared_settings_static
import strip-www exampledomain.cz
root * /var/www/vhosts/exampledomain.cz
}
Code language: JavaScript (javascript)
A to je celé.
Všimněte si, že měním hlavičku Server na ITisLove. Webový server by o sobě měl dle mého názoru práskat z bezpečnostních důvodů co nejméně informací (kdyby se objevila nějaká zranitelnost). Caddy web server není zatím příliš rozšířen, takže dalším bonusem je méně útoků. Příště si ukážeme Caddy jako reverzní proxy pro bittorent klienta Transmission, pro cockpit (pro správu serverů v Linuxu) a pihole (dns server pro blokování reklam a škodlivých stránek s webovým rozhraním). A taky práci s logem.
Kdo jsem:
IT nadšenec žijící v Kladně, system engineer, sysadmin, správce informačních systémů.
Proč jsem si založil tento web: někdo si píše deníček, někdo hraje hry, mne linux a svobodný software nepouští ani ve volném čase. Takže sem občas hodím nějakou svojí poznámku, která někomu možná pomůže.
Navíc, kdyby někdo potřeboval pomoc, tak mne může díky webu najít.
S čím vám mohu pomoci:
Počítač: Rád Vám pomohu s omlazením vašeho počítače (desktopu, notebooku) nebo sestavím nový.
Server: Chcete mít vlastní webový server, NAS (síťové úložiště), VPN server nebo CLOUD? Provozovat e-shop? I v tom vám mohu pomoci.
Domácí síť: Potřebujete vyřešit domácí síť, nejste spokojeni s rychlostí a kvalitou WiFi? Potřebujete připojit zařízení k VPN?
Počítač pro home office: Potřebujete nutně počítač pro home office, ale nechcete platit moc?
Počítač pro online výuku: Jste učitel nebo žák/student, či máte doma někoho, kdo je? Nemáte na čem pracovat? Pomohu vám to vyřešit.
Mám rád počítače a moderní technologie, Linux, zejména distribuce Ubuntu a Debian, CentOS a Rhel mi také nejsou cizí. Ve své práci se starám o více než 6000 linuxových serverů (Ubuntu, Red Hat Enterprise Linux, CentOS).
V minulosti jsem kromě správy linuxových serverů získal zkušenosti i se správou Windows Serverů a instalací a konfigurací linuxových a windowsových terminálů (například na docházku, nebo pro jídelny).
Jiří Meitner
IČ: 73763004
Fyzická osoba zapsaná v živnostenském rejstříku
podpora@ITisLove.cz
WhatsApp
Karla Tomana 830
Kladno
Středočeský kraj
272 04
Česko
Systémový inženýr, Linux administáror, správce informačních systémů, admin, IT specialista, IT help
Napsat komentář