WWW, HTTP servery

Ond�ej V�born�, xvyborny@fi.muni.cz


Obsah


HTTP protokol

Protokol http (HyperText Transfer Protokol) je protokolem aplika�n� vrstvy (vlastn� p�enos zaji��uj� ni��� vrstvy), kter� slou�� ke komunikaci mezi klientem a WWW serverem. Definuje tvar dat, kter� jsou p�en�ena, a pravidla dotaz� a odpov�d� komunikuj�c�ch stran. Obvykle je spu�t�n na portu 80.

Prvn� verze protokolu, HTTP 0.9, byla velmi jednoduch� a slou�ila pouze k pos�l�n� dat po Internetu bez dal��ch informac� o jejich obsahu a klient musel podle p��pon odhadovat, o jak� typ dat se jedn�. Zpo��tku to posta�ovalo, jeliko� p�en�en�mi daty byly jen textov� a hypertextov� dokumenty, ale jakmile se za�al protokol pou��vat i k p�enosu obrazov�ch, zvukov�ch a dal��ch typ� dat, bylo nutn� protokol upravit. Probl�my byly nejen s obt��n�m ur�ov�n�m typu dat, ale tak� s neznalost� jejich celkov� velikosti b�hem p�enosu (klient musel ��st, dokud server neukon�il spojen� a nev�d�, jak dlouho to bude trvat), �i zji��ov�n�m posledn� aktualizace dokumentu (toto protokol neumo��oval a tak musel klient dan� dokument v�dy znovu st�hnout, pokud cht�l m�t jistotu, �e je aktu�ln�).

V n�sleduj�c� verzi (HTTP 1.0, RFC 1945) byl form�t dotazu a odpov�di dopln�n podle standardu MIME (Multipurpose Internet Mail Extension, RFC 1521) o hlavi�ky, popisuj�c� typ a atributy p�en�en�ch dat, dal�� hlavi�ky obsahuj� pomocn� informace �i parametry p�ed�van� mezi klientem a serverem.

S rozvojem Internetu se ob�vovali dal�� po�adavky na http protokol, jako jsou hierarchick� struktura proxy, vyu��v�n� cache, trval� spojen� mezi klientem a serverem, nebo po�adavky na virtu�ln� servery. Tyto po�adavky �e�� dal�� verze protokolu, HTTP 1.1 (RFC 2068).


Jak HTTP funguje?

Existence r�zn�ch protokol� sebou p�in�� probl�my s kompatibilitou. Pokud m�me server podporuj�c� nov�j�� verzi protokolu a star��ho klienta (nebo naopak), mohou nastat probl�my. Proto se zavedlo rozli�ov�n� verze protokol� na stran� klienta p�ips�n�m t�to verze za jm�no po�adovan�ho souboru a na stran� serveru u nov�j��ho protokolu p�ips�n�m �et�zce "verze_protokolu k�d_odpov�di" na prvn� ��dek odpov�di.

Pop��eme si zde z�kladn� principy protokol� verze 1.0 a 1.1:

HTTP 1.0

Tento protokol je zalo�en na modelu dotaz - odpov��. Klient po�le na server dotaz, server mu odpov� a ukon�uje komunikaci. Pro z�sk�n� dal��ch dat mus� klient nav�zat nov� spojen�. Uchov�v�n� v�ech informac�, souvisej�c�ch s komunikac� (jako kter� data u� klient po�adoval a podobn�) jsou ponecha�na zcela na klientovi a tento protokol je tedy bezstavov�.

Pokud chce klient z�skat od serveru server soubor, ode�le dotaz ve tvaru:

GET /cesta/soubor HTTP/1.0

Server mu jako dpov�� po�le tento soubor, nebo chybov� hl�en�. V dotazu se nespecifikuje jm�no ani adresa serveru. IP adresa je pou��v�na protokolem ni��� vrstvy a protokol http pracuje na ji� nav�zan�m spojen�.

HTTP 1.1

HTTP 1.0 p�in�� n�kolik roz���en�. Jde zejm�na o mo�nost trval�ho spojen� mezi klientem a serverem (V p�edchoz�ch verz�ch bylo pro ka�d� URL navazov�no zvl�tn� TCP spojen�, co� nap��klad u obr�zk� vlo�en�ch do html str�nky v�razn� zvy�ovalo zat��en� serveru). P�i trval�m spojen� (kter� je u verze 1.1 implicitn� pro v�echny HTTP spojen�) pos�l� klient v�echny dotazy na dan� server po tomto spojen� server mu po n�m vrac� v�echny odpov�di. Spojen� se ukon�uje zasl�n�m hlavi�ky Contention:close. Po�adavek obsahuj�c� tuto hlavi�ku je posledn� na dan�m spojen�. V�echny po�adavky po�lan� p�i trval�m spojen� mus� m�t definovanou d�lku v hlavi�ce Message-length. Je tak� umo�n�no z�et�zen� zpacov�n�, p�i kter�m klient, kter� podporuje trval� spojen�, m��e dotazy z�et�zit a pos�lat je serveru, ani� by �ekal na odpov��. Server pak mus� odpov�di na tyto dotazy zas�lat v po�ad�, ve kter�m je obdr�el.

Dal��m roz���en�m je pou��v�n� virtu�ln�ch server�. Ve verzi 1.0 se p�edpokl�dalo, �e ka�d� IP adrese pat�� jeden WWW server a proto s pojmy IP adresa �i jm�no po��ta�e nepracoval. HTTP 1.1 zav�d� hlavi�ku Host. Pokud tato hlavi�ka chyb�, vrac� chybu. Server pomoc� t�to hlavi�ky m��e na r�zn� jm�na po��ta�e vracet r�zn� odpov�di.

Verze 1.1 zav�d� tak� tzv. vyjedn�v�n� o obsahu. Sn�� se na dotaz vr�tt dokument, kter� by nnejl�pe odpov�dal po�adavk�m klienta (pokud tedy existuje v�ce variant, nap��klad r�zn� k�dov�n� dokumentu, komprese apod.). Pro tuto slu�bu poskytuje protokol 1.1 dva mechanismy. Serverem ��zen� dohadov�n� pracuje na stran� serveru a vych�z� z informac�, ketr� server z�sk� z hlavi�ek dotazu (tyto hlavi�ky jsou Accept, Accept-Charset, Accept-Encoding, Accept-Language, User-Agent). P�i klientsky ��zen�m dohadov�n� vyb�r� nejlep�� variantu klient po obdr�en� prvn� odpov�di od serveru. V odpov�di sjou v hlavi�ce Alternates nebo v tele odpov�di jako seznam URL uvedeny existuj�c� varianty dokumentu. Aby klient z�skal po�adovn� dokument, je pot�eba prov�st druh� dotaz (co� lze br�t jako nev�hodu tohoto p��stupu).


Metody protokolu HTTP

Metoda je druh slu�by, kterou klient od serveru po�aduje, p��e se velk�mi p�smeny. Server nemus� v�echny metody podporovat a p�i dotazu na nepodporovnaou metodu pak vrac� chybovou hl�ku. Metody jsou:
OPTIONS
Metoda OPTIONS p�edstavuje dotaz na mo�nosti komunikace spojen� s uveden�m URL. Metoda umo��uje klientovi ur�it mo�nosti a omezen� spojen� se zdrojem nebo schopnostmi serveru. Pokud je URL v dotazu ve tvaru "*", pak se jedn� o dotaz na mo�nosti serveru jako celku.
GET
Metoda GET p�edstavuje po�adavek na posl�n� dokumentu ur�en�ho pomoc� URL. V souvislosti s proxy se m��e metoda GET zm�nit na "podm�n�n� GET", kter� po�aduje poslat dokument pouze za ur�it�ch podm�nek definovan�ch v hlavi�ce dotazu.
HEAD
HEAD metoda je identick� s metodou GET, server v�ak nemus� pos�lat t�lo odpov�di. Metodu je mo�n� pou��t k z�sk�n� dopl�kov�ch informac� o dokumentu. �asto se pou��v� k testov�n� hypertextov�ch linek, jejich dostupnosti a posledn� modifikace. Klient m��e z�skan� hlavi�ky analyzovat a p��padn� po��dat o data nov�m dotazem GET.
POST
POST metoda se pou��v� v p��pad�, kdy m� c�lov� server p�ijmout data z po�adavku. Skute�n� funkce metody z�vis� na URL s n� spojen�. V�sledkem POST metody m��e b�t posl�n� mailu, p�ed�n� dat do procesu, kter� data zpracuje, roz���en� datab�ze. Pos�lan� data nejsou nijak omezena a je mo�n� v hlavi�k�ch t�lo zpr�vy popsat.
PUT
PUT metoda p�edstavuje po�adavek na ulo�en� pos�lan�ch dat pod specifikovan� URL na server. Takto ulo�en� data budou dostupn� nap�. n�sledn�mi dotazy GET. Metoda PUT p�edpokl�d�, �e ulo�en� dat do souboru na server prov�d� p��mo server a nikoli extern� aplikace (CGI program).
DELETE
Po�adavek na zru�en� dokumentu na serveru. Ru�en� dokument je specifikov�n v URL.
TRACE
Metoda pou�it� k testov�n� originaln�ho serveru. Originaln� server m� vr�tit klientovi kladnou odpove� bez dat.

Form�t dotazu a odpov�di

Ka�d� dotaz odes�lan� na server obsahuje dotazov� ��dek, hlavi�ky bl��e popisuj�c� dotaz, pr�zdn� ��dek a t�lo dotazu (kter� m��e b�t pr�zdn�):

GET /index.html HTTP/1.0
Accept: text/html
Accept: image/gif
  * prazdny radek *
Odpov�di jsou zas�l�ny se stavov�m ��dkem, hlavi�kami popisuj�c�mi odpov��, pr�zdn�m ��dkem a t�lem odpov�di:

HTTP/1.0 200 OK
Server: Netscape-Enterprise/2.0a
Date: Thu, 06 Mar 1997 16:23:43 GMT
Accept-ranges: bytes
Last-modified: Fri, 22 Dec 1995 17:41:00 GMT
Content-length: 1032
Content-type: text/html

<HEAD>
    <TITLE> Obrazky ze sveta  </TITLE>
</HEAD>

<BODY>
<BODY BACKGROUND="/images/back1.gif" TEXT="#000000"

<H1><P ALIGN=CENTER> <B><I>
<FONT SIZE=+3>Obrazky ze sveta</B></H1>
</I></P> ....

P��klad z�porn� odpov�di:

HTTP/1.0 404 Not found
Server: Netscape-Enterprise/2.0a
Date: Thu, 06 Mar 1997 16:12:04 GMT
Content-length: 207
Content-type: text/html

<TITLE>Not Found<TITLE><H1>Not Found</H1>
The requested object does not exist on
this server. The link you followed
 is either outdated,
inaccurate, or the server
has been instructed not to let you have it.


Hlavi�ky protokolu HTTP

Vych�zej� ze standardu MIME. Jejich syntax je n�sleduj�c�:

n�zev hlavi�ky: hodnota[;parametr=hodnota]

kde parametry jsou nepovinn� a pou��vaj� se jen u n�kter�ch hlavi�ek. Ka�d� hlavi�ka za��n� na nov�m ��dku. P��klad:

Content-type: text/html; charset=ISO-8859-1
Content-lenght: 1032

Hlavi�ky mohou b�t obecn� (univerz�ln� informace o zpr�v�), dotaz� a odpov�d�, nebo t�la (popis t�la zpr�vy). Na jejich po�ad� nez�le��, ale je doporu�eno je d�lit podle t�chto kategori� v uveden�m po�ad�.

Obecn� hlavi�ky: Date, Pragma, Mime-version. U verze 1.1 jsou p�id�ny hlavi�ky Connection, Transfer-Encoding, Via.

Hlavi�ky dotazu: Authorization, From, If-Modified-Since, Referer, User-Agent. U verze 1.1 jsou p�id�ny hlavi�ky Accept, Host, Accept-Charset, Accept-Encoding.

Hlavi�ky odpov�di: Location, Server, WWW-Authenticate. U verze 1.1 je p�id�na hlavi�ka Retry-After.

Hlavi�ky t�la: Allow, Expires, Last-Modified, Content-Encoding, Content-Length, Content-Type. U verze 1.1 je p�id�na hlavi�ka Content-Range.


V�sledkov� k�dy

D�l� se do p�ti skupin podle sv� prvn� ��slice:
1xx - informa�n� - Po�adavek byl obdr�en.
100 Continue
Klient m��e pokra�ovat v pos�l�n� po�adavku. Jde o meziodpov�� od serveru. Po obdr�en� cel�ho po�adavku ho server za�ne obsluhovat a po�le kone�n� v�sledkov� k�d.
101 Switching Protokols
Server rozum�l po�adavku a m�n� protokol podle specifikace v hlavi�ce Upgrade.

2xx - �sp�ch
200 OK
Dotaz byl obslou�en bez chyb. Server pos�l� odpov��.
201 Created
V�sledkem zpracov�n� dotazu bylo vytvo�en� nov�ho objektu, kter� lze identifikovat pomoci URL. URL vytvo�en�ho dokumentu je pos�l�no v t�le odpov�di.
202 Accepted
Dotaz byl p�ijat, jeho zpracov�ni v�ak dosud neskon�ilo. Klient nemus� �ekat na dokon�en�.
203 Non-Autoritative Information
Vr�cen� meta informace nejsou poslan� z originaln�ho serveru.
204 No Content
Dotaz byl akceptov�n a v po��dku obslou�en, nevznikla v�ak ��dn� data, kter� by server klientovi poslal.
206 Reset Content
Server obslou�il po�adavek a klient m� nastavit p�vodn� obsah dokumentu, ktery p�edpokl�da vlo�eni u�iv. dat.

3xx - p�esm�rov�n� - Klient mus� prov�st dal�� akce, aby z�skal po�adovan� dokument.
300 Multiple Choices
Po�adovan� dokument je dostupn� na n�kolika m�stech, klient mus� vybrat jeden z dokument� a znovu vyslat dotaz.
301 Moved Permanently
Objekt byl trvale prest�hov�n na nov� URL (server je ozn�m� v hlavi�ce Location). Klient se mus� zeptat na nov�m m�st�.
302 Moved Temporarily
Objekt byl do�asn� p�esunut jinam. Klient se mus� obr�tit na nov� m�sto, nem�l by si v�ak nap��klad p�episovat URL objektu ve svych z�lo�kach, proto�e p�em�st�n� je jen do�asn�.
303 See Other
Odpov�� je dostupn� na jin�m URL. Nen� v�ak n�hradou za URL p�vodn�.
304 Not Modified
Server odpov� t�mto k�dem, pokud klient poslal podm�n�n� dotaz GET na dokument, kter� m� ulo�en� v cache a odpov�daj�c� dokument na originaln�m serveru nebyl modifikov�n.
305 Use Proxy
Po�adavek mus� b�t znovu posl�n prost�ednictv�m proxy uveden� v URL.

4xx - klientova chyba - Klient polo�il chybn� dotaz nebo nem� opr�vn�n� z�skat dokument po�adovan� v dotazu.
400 Bad Request
Chybn� syntax dotazu.
401 Unauthorized
Obslou�en� dotazu je v�z�no na ur�it� identifika�n� po�adavky, kter� klient nesplnil.
402 Payment Required
Tento k�d je rezervov�n pro budouc� pou�it�.
403 Forbidden
Server m� od spr�vce zak�z�no odpov�dat na dotaz.
404 Not Found
Objekt s po�adovan�m URL neexistuje. Tento chybov� k�d je nej�ast�j��. P���inou m��e b�t bu� p�eklep v URL, nebo z�nik objektu.
405 Method Not Allowed
Pou�it� metoda neni pro uveden� URL povolena.

5xx - chyba serveru - Server nen� z n�jak�ho d�vodu schopen obslou�it po�adavek.
500 Internal Server Error
B�hem zpracov�n� dotazu do�lo v programu serveru k bl��e neur�en� chyb�.
501 Not Implemented
Server nepoznal metodu, kterou je posl�n po�adavek.
502 Bad Gateway
Chybu 502 po�le zprost�edkuj�c� server, pokud na v� dotaz dostal od p�vodn�ho serveru �patnou odpov��.
503 Service Unavailable
Server moment�ln� nedok�e v� dotaz obslou�it - nap��klad je p�et��en, nebo pr�v� prob�h� jeho �dr�ba.
504 Gateway Timeout
Server pracuj�c� s proxy nebo gateway nedostal v�as odpov��, aby mohl vy�dit v� po�adavek.
505 HTTP Version Not Supported
Server nepodporuje verzi protokolu pou�itou v po�adavku.

Server Apache

Projekt Apache (A PAtCHy server) vznikl v letech 1995 z v t� dob� neju��van�j��ho serveru httpd, ter� byl vyv�jen v NCSA (National Center for Supercomputing Applications) na univerzit� v Illinois. V t� dob� se server httpd p��li� nevyv�jel a spr�vci s�t� si pro sv� pot�eby vytv��eli k httpd mnoho patch�, proto�e n�roky u�ivatel� Internetu rychle rostly. Skupina t�chto spr�c� se rozhodla, �e z p�vodn�ho httpd 1.3 a t�chto patch� vytvo�� nov� HTTP server (odtud n�zev apache). Prvn� verze, 0.6.2 vy�la v dubnu 1995. V t� dob� NCSA za�alo op�t vyv�jet sv�j httpd a po dohod� o spole�n�m v�voji ob� organizace spolupracuj�.
Od verze 0.8.8 zm�nil dosavadn� strukturu a dal p�ednost modul�rn�. Prvn� "�pln�" verze (tj. s plnou dokumentac�, otestovan�,...), 1.0, byla vyd�na v prosinci 1995. Od roku 1996 je to podle netcraft.com ve sv�t� v�bec nejpou��van�j�� sever, kter� podporuje velkou v�t�inu opera�n�ch syst�m� (Unixu, OS/2, Windows, Netware 5.x). Dal�� informace o serveru Apache lze nal�zt na jeho domovsk� str�nce apache.org.

Instalace a kofigurace

Moment�ln� jsou vyv�jeny dv� verze serveru apache - 1.3 (posledn� je 1.3.29) a 2.0 (2.0.48). Moduly vyv�jen� pro verzi 2.0 nejsou sp�tn� kompatibiln� s verz� 1.3.

Instalace

Pro instalaci Serveru Apache nejd��ve st�hneme n�mi po�adovanou verzi z www.apache.org a po rozbalen� zdrojov�ch k�d� m��eme instalovat (je tak� samoz�ejm� mo�n� instalovat Apache pomoc� rpm bal��k� Va�� obl�ben� distribuce). Pou�ijeme klasick� postup
$ ./configure --prefix=PREFIX
$ make
$ make install
$ PREFIX/bin/apachectl start
Apache je nyn� nainstalov�n v adres��i PREFIX, co� je implicitn� /usr/local/apache.
P�i konfiguraci m��eme pou��t p�ep�na�e, kter� zjist�me pomoc�
$ ./configure --help
d�le�it� jsou zejm�na:
  --enable-module=NAME     Povol� modul jm�nem NAME
  --enable-shared=NAME     Modul jm�nem NAME povol� zkompilovat jako zavediteln� DSO modul
Moduly m��eme zkompilovat do jeho j�dra (jsou pak rychlej��, ale p�i zav�d�n� nov�j�� verze tohoto modulu mus�me p�ekompilovat cel� j�dro), nebo jako DSO (Dynamic Shared Object) moduly (pou�t� se p�i startu apache, jejich v�hodou je flexibilita a snadn� roz���en� o dal�� moduly, nejsou v�ak pou�iteln� na v�ech platform�ch a zpomaluj� lehce start Apache).
Chceme-li moduly zkompilovat jako DSO moduly, mus�me nainstalovat modul so(staticky) a pomoc� parametru --enable-shared=MODUL uvedeme modul(y), kter� chceme zkompilovat jako DSO. Pokud chceme takto zkompilovat v�echny moduly, pou�ijeme parametr --enable-shared=max. T�m se v�echny povolen� moduly zkompiluj� jako DSO. Jestli�e nechceme n�kter� z nich zkompilovat jako DSO, sta�� pou��t parametr --disable-shared=MODUL a on se zkompiluje staticky.
Pro modul kter� nen� sou��st� bal�ku, ale chceme ho zkompilovat s ostatn�mi, pou�ijeme parametr --activate-module=cesta_k_modulu/modul, p��padn� parametr --add-module=cesta_k_modulu/modul, z�le�� na dokumentaci k tomuto modulu. N�jak� p��klad kompilace:
./configure --prefix=/www --enable-module=all --enable-shared=max
make
make install
Zapne v�echny moduly a zkompiluje je jako DSO. Instalace bude provedena do adres��e /www

Konfigurace

Hlavn�m konfigura�n�m souborem Apache je /PREFIX/etc/httpd.conf, ve kter�m m�me direktivy rozd�len� do t�� ��st�:
Pozn�mka: Pokud p�i nastavov�n� cesty k soubor�m za�neme tuto cestu "/", bude se br�t explicitn� tato cesta. Pokud "/" neuvedeme, dopln� se p�ed cestu hodnota prom�nn� ServerRoot.
Dal��mi konfigura�n�mi soubory Apache jsou access.conf a srm.conf
P��klady prom�nn�ch v httpd.conf:
ServerType - standalone - server je spou�t�n samostatn�
ServerRoot - cesta ke konfigura�n�m soubor�m
ServerName - jm�no serveru
ServerAdmin - root@server
DocumentRoot - cesta ke ko�enov�mu adres��i s dokumenty
ErrorLog - logs/error_log --cesta, kde se maj� ukl�dat chybov� hl�ky Apache
LogLevel - nastaven� priority log� (stejn� jako u syslogu)
AccessFileName - jm�no souboru, kter� se m� v ka�d�m adres��i hledat kv�li povolen� p��stupu (typicky .htaccess)
Timeout - po�et sekund do vypr�en� �asu
MaxClients - maxim�ln� po�et klient�
Listen - adresa a port, na kter�m server poslouch�
AddModule - aktivace na�ten�ch modul�,p��p. zakompilovan�ch v apache
LoadModule - na�ten� modul� dynamick�ch (nap�. LoadModule proxy_module modules/ApacheModuleProxy.dll)
httpd.conf je velmi dob�e okomentov�n, tak�e zde nebudu vypisovat v�echny jeho prom�nn�. D�le mus�me definovat adres��e a jejich "pr�va":
Directory - ozna�uje ur�itou skupinu, pro kterou budou platit n�jak� pravidla (Options)
Options m��e nab�vat hodnot:
None - ��dn� zvl�tn� pr�va a omezen�
All - povoluje se v�e krom� MultiViews - v�choz� volba
ExecCGI - povoleno spou�t�n� cgi skript�
FollowSymLinks - server se bude odkazovat na symbolick� linky v tomto adres��i
Indexes - pokud server nenajde soubor definovan� v DirectoryIndex
(v�t�inou index.html, index.htm, index.php), je povolen v�pis dan�ho adres��e
Includes, IncludesNOEXEC, MultiViews, SymLinksIfOwnerMatch
P��klad:
<Directory /usr/local/httpd/htdocs>
Options Indexes FollowSymLinks
</Directory>
Tyto volby povoluj� pouze odkazovat na symbolick� odkazy a vypsat adres�� p�i nenalezen� DirectoryIndex. Nap�. u�ivatel z tohoto adres��e nem� pr�vo spustit cgi skript.

Virtu�ln� servery

Apache umo��uje, aby na jednom stroji b�elo v�ce server� najdenou. Rozli�ovat je m��eme pomoc� jejich jmen (maj� stejnou IP adresu), nebo jejich IP adresy (maj� stejn� jm�no). Nastavov�n� virtu�ln�ch server� se d�l� pomoc� <VirtualHost> a </VirtualHost>. Budeme-li virtu�ln� servery rozli�ovat pomoc� jejich jmen, je t�eba jim p�i�adit alespo� jednu IP adresu:

NameVirtualHost 192.164.100.5        // IP adresu lze v tomto p��pad� nahradit "*"
<VirtualHost 192.168.1.11>
         ServerAdmin admin@web1.cz
         DocumentRoot /doc/web1
         ServerName www.web1.muj.cz
</VirtualHost>
<VirtualHost 192.168.1.11>
         ServerAdmin admin@web2.cz
         DocumentRoot /doc/web2
         ServerName www.web2.muj.cz
</VirtualHost> 
Server m��e m�t i v�ce jmen, nap�. uvedu-li direktivu <ServerAlias> neco.cz *.neco.cz v definici prvn�ho virtu�ln�ho hostitele, bude ka�d� po�adavek na dom�nu neco.cz obslou�en t�mto virtu�ln�m serverem. Samoz�ejm� mus� b�t tak� spr�vn� nakonfigurov�n DNS server, aby mapoval tato jm�na na n�jakou IP adresu spojenou s na��m serverem.

SSL vrstva

Pro� se v�bec pokou�et rozb�hat https protokol vedle standardn�ho http? D�vod je jasn�, jde o bezpe�nost p�enosu dat mezi serverem a prohl��e�em, proto�e po protokolu http prob�h� p�enos ne�ifrovan�, pouze jako hol� text. Naproti tomu protokol https �ifruje data pomoc� �ifrovac� vrstvy SSL (Secure Socket Layer). P��kladem m��e b�t p�enos d�v�rn�ch dat nap�. ��slo VISA karty, spojen� s bankou �i spojen� s internetov�m informa�n�m syst�mem podniku nebo �koly, vyb�r�n� po�ty pomoc� skript� kter� spolupracuj� s jinak ne�ifrovan�m protokolem POP3 a cel� �ada dal��ch. Vrstva SSL pracuj na principu symetrick� kryptografie, vyu��v� tedy jeden symetrick� kl��. K jeho z�sk�n� mus� klient nav�zat spojen� se serverem a po v�m�n� informac� o verzi SSL je pomoc� ve�ejn�ho kl��e serveru vytvo�en session_key, kter� je pou��v�n k dal�� komunikaci. Abychom mohli pou��vat v Apachi SSL, pot�ebujeme n�jakou kryptovac� knihovnu (nejl�pe OpenSSL a p�idat modul mod_ssl.
Instalace prob�h� n�sledovn� (p��klad): St�hneme si mod_ssl a openssl,
$ cd openssl-0.9.7c                      # zkompilujeme OpenSSL
$ ./config
$ make
$ cd ../mod_ssl-2.8.16-1.3.29            # vytvo��me Apache s SSL
$ ./configure \
    --with-apache=../apache_1.3.29 \
    --with-ssl=../openssl-0.9.7c \
    --prefix=/usr/local/apache
$ cd ..
$ cd apache_1.3.29
$ make
$ make certificate
$ make install
Nyn� m�me certifik�t, kter� jsme si sami podepsali, co� nen� z hlediska d�v�ryhodnosti �pln� ono. Lep�� je vygenerovat si vlastn� kl�� a ��dost o certifik�t a tu poslat certifika�n� autorit�. Z�skan� certifik�t pak implementovat do Apache.
$ openssl genrsa -des3 -out mujserver.key 2048
$ openssl req -new -key mujserver.key -out mujserver.csr
Pak by se Apache zkompiloval n�sledovn�:
...
$ cd ../mod_ssl-2.8.11-1.3.27
$ ./configure --with-apache=../apache_1.3.27 \
   --with-ssl=../openssl-0.9.6g \
   --with-crt=/cesta/k/mujserver.crt \
   --with-key=/cesta/k/mujserver.key \
   --prefix=/path/to/apache
...
SSL nakonfigurujeme v httpd.conf:
Port - port vyhra�en� pro SSL je 443
SSLCertificateFile - ur�uje cestu k ve�ejn�mu certifik�tu serveru
SSLCertificateKeyFile - ur�uje cestu k tajn�mu kl��i serveru
SSLEngine on - povoluje SSL
Apache pak spust�me p��kazem:
$ PREFIX/bin/apachectl startssl

Apache_ssl

Apache_ssl je patch zdrojov�ch k�d� k Apache serveru a nelze ho tedy zam��ovat s mod_ssl (co� je modul). Po rozbalen� st�hnut�ho aktu�ln�ho patche (v adres��i se zdrojov�mi soubory Apache) uprav�me pomoc� skriptu ./FixPath zdrojov� soubory Apache. Pot� n�sleduje klasick� ./configure --parametry && make Po zkompilov�n� je nutn� vytvo�it (pokud je ji� nem�te vytvo�en� p�edem) p��kazem cd src; make certificate certifik�ty a p��kazem make install server nainstalovat. �prava httpd.conf nen� tak jednoduch� jako u mod_ssl a je dobr� dr�et se pokyn� v README.SSL a p�ilo�en� dokumentaci.
Pokud pou�ijeme Apache_ssl, m�me server, kter� s�m o sob� podporuje ssl bez nutnosti p�id�vat dal�� moduly. Pro mod_ssl hovo�� �ast�j�� aktualizace.

CGI skripty

CGI skripty jsou programy, spou�t�n� na stran� serveru, jejich� v�stup je pot� p�ed�n klientovi. Abychom je mohli pou��t, mus�me upravit konfiguraci httpd.conf:
LoadModule cgi_module modules/mod_cgi.so # nahr�n� modulu pro cgi
AddModule mod_cgi.c                      # jeho aktivace
AddHandler cgi-script .cgi               # p��pony cgi pova�uj za cgi skripty
ScriptAlias /cgi-bin/ "/var/www/cgi-bin" # pokud zavol�me cgi skript pomoc� http://server/cgi-bin, bude n�s to odkazovat na absolutn� adresu dan�ho stroje /var/www/cgi-bin
Je t�eba tak� p�idat mo�nost spou�t�t tyto skripty dan�mu adres��i:

<Directory "/var/www/cgi-bin">
Options +ExecCGI
</Directory>

Alternativn� servery

Dal�� servery, kter� se pou��vaj� (by� v daleko men��m po�tu) jsou nap��klad Tux, Roxen, Zeus.
Roxen je open-source server distribuovan� pod GPL licenc�. Podporuje n�kolik opera�n�ch syst�m� (windows, linux, solaris, Mac OS X). Konfigurace a administrace je prov�d�na pomoc� internetov�ch prohl��e��. Architektura nez�visl� na platform� umo��uje snadn� p�en�en� modul�. Roxen obsahuje MySQL datab�zi, umo��uje spou�t�t programy v RXML, Jave, Perlu, PHP, CGI a dal��ch.
TUX (Threaded linUX http layer) je kernelov� http server. Je velmi rychl�, �eho� dosahuje cachov�n�m na s��ov� vrstv� a vol�n�m CGI skript� p��mo z j�dra. Bli��� informace o jeho funkc�ch najdete zde.
Zeus je krom� jin�ho komer�n� webov� server, kter� je rychl�, velmi bezpe�n� a spolehliv� (alespo� to o n�m tvrd� jeho tv�rci ;). Pou��v� ho nap��klad eBay. Administrace je tak� prov�d�na pomoc� webov�ho rozhran� a podporuje mnoho progamovac�ch jazyk�.