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>
/etc/apache2/sites-enabled
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/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 1098mod_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