Protokol HTTP byl puvodně navržen pro přenos hypertextových dokumentů, novější verze umožňují přenášet i jiné typy objektů. Pro komunikaci využívá rezervovaný port TCP/80. Protokol pracuje na principu request/response. Klient se serverem nejčastěji komunikuje pomocí webového prohlížeče.
Protokol HTTP 0.9 - Toto je puvodní protokol. Nerozlišoval druh zasílaných dat a obsahoval pouze metodu GET.Metoda GET posílá na server pouze URL adresu a hlavičku. Metoda POST navíc posílá i tělo zprávy a tím je možné k požadavku přidat další data. Např. uploadovaný soubor nebo formulářová data. viz. Wikipedia metoda POST
GET / HTTP/1.1 Host: www.youtube.com User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; cs-CZ; rv:1.9.2.11) Gecko/20101013 Ubuntu/10.04 (lucid) Firefox/3.6.11 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: cs,en-us;q=0.7,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-2,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive Cookie: VISITOR_INFO1_LIVE=iJRB9mEebWU; ...
HTTP/1.1 200 OK Date: Fri, 05 Nov 2010 20:54:42 GMT Server: Apache X-Content-Type-Options: nosniff Content-Encoding: gzip Set-Cookie: GEO=108fd9e2df719b51a922da66ce65db61cwsAAAAzQ1pWPZPYTNRvEg==; path=/; domain=.youtube.com Expires: Tue, 27 Apr 1971 19:44:06 EST Cache-Control: no-cache Content-Length: 16571 Content-Type: text/html; charset=utf-8
sudo apt-get install apache2
Konfigurace serveru Apache se nachází v adresáři /etc/apache2
a základním konfiguračním je apache2.conf
/etc/apache2/apache2.conf ServerRoot "/etc/apache2" - definuje kde jsou uloženy hlavní konfigurační soubory. KeepAlive On - zapíná možnost trvaleho spojení s klientem(umožňuje více požadavků na jedno spojení). KeepAliveTimeout 15 - počet sekund po které server udržuje spojení s klientem. Na hodně vytížených serverech se nedoporučuje nastavovat vysoké hodnoty. DefaultType text/plain - výchozí MIME typ, který je použit pokud se serveru nepodaří zjistit MIME typ dokumentu. ErrorLog /var/log/apache2/error.log - cesta k logovacímu souboru. LogLevel warn - intenzita logování, možné hodnoty jsou debug, info, notice, warn, error, crit, alert, emerg.
/etc/apache2/sites-available
Tento adresář obsahuje soubory s konfiguracemi všech dostupných virtuálnich serverů. Virtuální servery slouží
Soubor s konfigurací obsahuje tyto direktivy
< VirtualHost *:80> ServerAdmin webmaster@localhost - email na administrátora ServerName www.example.com - nastavení jména serveru DocumentRoot /var/www - adresář kde jsou uloženy soubory webových stránek < Directory /var/www> - konfigurace adresáře /var/www Options Indexes FollowSymLinks MultiViews - nastavení chování adresáře AllowOverride None - zakázání používání souboru .htaccess Direktiva AllowOveride Order allow,deny - Pořadí povolení přistupu nejdřív se provede povolení a potom zakázání a to i v případě, že jsou níže uvedeny v poačném pořadí deny from none allow from all </Directory> </VirtualHost>V tomto adresáři jsou symbolické odkazy do adresáře /etc/apache2/sites-available, které určují jaké konfigurace se budou načítat při startu serveru.
/etc/apache2/sites-enabled
/etc/apache2/mods-availableZde jsou uloženy všechny dostupné moduly a jejich konfigurace. Pokud se zde nenachází modul který potřebujeme je možno jej doinstalovat např. pomocí
sudo apt-get install libapache2-mod-php5
pro instalaci modulu pro PHP./etc/apache2/mods-enabledObsahuje symbolické linky do /etc/apache2/mods-available a tím určuje se kterými moduly bude apache startovat.
openssl req -new -x509 -nodes -out cert.pem -keyout key.pem -days 1098
mod_ssl
< VirtualHost _default_:443> ... SSLEngine on - Zapíná SSL SSLCertificateFile /etc/apache2/ssl/server.cer - Cesta k certifikátu SSLCertificateKeyFile /etc/apache2/ssl/server.key - Cesta k soukromému klíči </VirtualHost>
< Directory /home/*/public_html> Options +ExecCGI - Povoluje spouštění CGI skriptu pro daný adresář AddHandler cgi-script .cgi - Informuje webový server o tom jaké extenze má považovat jako CGI skripty </Directory>
Klient serveru sdělí svoje požadavky na jazyk a kódování pomocí atributů Accept-Language
, Accept-Charset
a Accept-Encoding
v hlavičče. Server se pokusí najít dokumenty splňující klientovy požadavky. Tato možnost se zapíná ve vlastnostech adresáře, kde musí být nastavena vlastnost MultiViews
a přidán výčet podporovaných jazyků/kódování pomocí AddLanguage, AddCharset nebo AddEncoding
. Dále v musí být v tomto adresáři na serveru uloženy stejné dokumenty pro různé jazyky/kódování. Např. pro kodovani index.html.utf-8, index.html.cp1250
a pro jazykové mutace index.html.cs, index.html.en
. Na základě doplněné extenze server pozná požadovaný dokument.
Druhou možností pro změnu kódování je dynamické překódování pomocí webového serveru. Na serveru je uložena jedna verze dokumentu a server jej podle klientova požadavku překóduje do potřebné podoby.
< Directory /duverne>
AuthType Basic - Nastavení ověrování pomocí jména a hesla, je potřeba mít načtený modul mod_auth_basic
AuthName "Důvěrné" - Nastavení názvu autentifikační oblasti
AuthUserFile /hesla/duverne/hesla.txt - Cesta k souboru s uzivateli
Require user Franta Pepa Petr Pavel Frank - Uživatelé kterým bude povolen přístup
</Directory /duverne>
Soubor se hesly vytvoříme pomocí příkazuhtpasswd -c soubor_s_hesly uzivatel_pro_pridani