WWW, HTTP servery
Ond�ej V�born�, xvyborny@fi.muni.cz
Obsah
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).
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
Obrazky ze sveta
Obrazky ze sveta
....
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
Not FoundNot Found
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.
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�:
- direktivy ��d�c� celkovou �innost serveru (glob�ln� prost�ed�)
- definice parametr� hlavn�ho serveru (nebo implicitn�ho), kter� odpov�d� na dotazy, kter� nejsou zpracov�v�ny virtu�ln�m hostitelem.
- nastaven� virtu�ln�ch server�, kter� umo�uj� odes�lat webov� po�adavky na r�zn� IP adresy nebo jm�na server� a jejich zpracov�n� stejn�m procesem serveru Apache.
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>
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�.