HTTP-protokolla ja Apache

Tällä luennolla käsitellään tärkeimmät kohdat HTTP-protokollasta sekä oleellisimpia Apache-WWW-palvelimen ominaisuuksia.

Luentotaltiointi

HTTP (HyperText Transfer Protocol)

HTTP on protokolla, jonka avulla selain ja WWW-palvelin keskustelevat.

Selain lähettää WWW-palvelimelle pyynnön:

HEAD /www/ HTTP/1.0
Connection: keep-alive
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Encoding: gzip,deflate
Accept-Language: en-us,en;q=0.5
Host: appro.mit.jyu.fi
Referer: http://appro.mit.jyu.fi/ 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624
KEEP-ALIVE: 300
Selaimen lähettämät http-otsakkeet selityksineen
HEAD /www/ HTTP/1.0 pyydetään pelkkiä otsikkotietoja (HEAD) sivusta jonka osoite palvelimella on /www/ käyttäen HTTP/1.0-protokollaa
Connection: keep-alive Käsketään pitää yhteys päällä
Accept: text/xml, application/xml, application/xhtml+xml, text/html;q=0.9, text/plain;q=0.8, video/x-mng, image/png, image/jpeg, image/gif;q=0.2, */*;q=0.1 Luetellaan selaimen ymmärtämät mediatyypit. Kerrotaan myös mitä mediatyyppejä suositaan q-arvojen avulla
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Luetellaan kelpaavat merkistöt
Accept-Encoding: gzip,deflate Luetellaan tuetut koodaustavat (pakkaus)
Accept-Language: en-us,en;q=0.5 Halutut kielet
Host: appro.mit.jyu.fi Palvelimen nimi
Referer: http://appro.mit.jyu.fi/ Osoite josta ollaan tulossa (sivu jolla olevaa linkkiä on klikattu)
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Selaimen tiedot

Palvelin vastaa:

HTTP/1.0 200 OK
Connection: close
Date: Tue, 06 Apr 2004 10:53:18 GMT
Accept-Ranges: bytes
ETag: "2da29-2147-4044819d"
Server: Apache/1.3.27 (Unix)  (Red-Hat/Linux) AxKit/1.62 mod_python/2.7.8 Python/1.5.2 mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26 mod_throttle/3.1.2
Vary: Accept
Content-Length: 8519
Content-Type: application/xhtml+xml; charset=iso-8859-1
Last-Modified: Tue, 02 Mar 2004 12:44:13 GMT
WWW-palvelimen vastaus
HTTP/1.0 200 OKStatuskoodi - kaikki kunnossa
Connection: closeSuljetaan yhteys
Date: Tue, 06 Apr 2004 10:53:18 GMTPäivä ja aika
Accept-Ranges: bytesSallitaan tavuina määritellyt pyynnöt
ETag: "2da29-2147-4044819d"Tunniste
Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) AxKit/1.62 mod_python/2.7.8 Python/1.5.2 mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26 mod_throttle/3.1.2WWw-palvelimen tiedot
Vary: Accept
Content-Length: 8519Sisällön koko
Content-Type: application/xhtml+xml; charset=iso-8859-1mediatyyppi ja merkistö
Last-Modified: Tue, 02 Mar 2004 12:44:13 GMTMilloin viimeksi muutettu

HTTP Status codes

Ainakin tärkeimmät seuraavista http-statuskoodeista on syytä tunteä

Apache-WWW-palvelin

Apache on maailman eniten käytetty WWW-palvelinohjelmisto

Suurin osa www-sovellusten tarvitsemasta toiminnallisuudesta kannattaa tehdä jo WWW-palvelimella koska selainten erot ja laajennuksien puute hankaloittavat joidenkin asioiden suorittamista selaimissa.

.htaccess

.htaccess on Apache-WWW-palvelimissa käytetty tiedosto, jolla voidaan muuttaa palvelimen asetuksia. .htaccess-tiedoston avulla voidaan toteuttaa mm. salasanasuojaus, edelleenohjaus ja mime-tyyppien lisäykset.

Edelleenohjaus

Edelleenohjaus tehdään HTTP:n location-komennolla. Apachesta löytyy suoraan valmiit komennot tätä varten. Edelleenohjausta EI PIDÄ TEHDÄ käyttämällä väliaikaisia www-sivuja ja niihin tehtyjä epästandardeja virityksiä!

Pysyvä edelleenohjaus:

Redirect permanent /tt-appro/index.html http://appro.mit.jyu.fi/

Väliaikainen edelleenohjaus:

Redirect /tt-appro/index.html http://appro.mit.jyu.fi/

Monimutkaisemmat edelleenohjaukset


RedirectMatch permanent /doc/tietokone/pc.* http://appro.mit.jyu.fi/doc/tietokone/
RedirectMatch permanent /doc/kayttojarjestelma/win.* http://appro.mit.jyu.fi/doc/kayttojarjestelma/

RewriteEngine on
RewriteOptions inherit
RewriteBase    /doc/

RewriteRule   ^(.*)\.svm              $1      [C,E=WasHTML:yes]
RewriteCond   %{REQUEST_FILENAME}.jpg -f
RewriteRule   ^(.*)$ $1.jpg                   [S=1]
RewriteCond   %{ENV:WasHTML}            ^yes$
RewriteRule   ^(.*)$ $1.png

Mediatyypit

Mediatyyppi kertoo selaimelle minkälainen tiedosto on kyseessä. Selain ei saa itse arvailla tiedoston tyyppiä tiedostopäätteen perusteella.

Esimerkki:

AddType text/plain .html
AddType text/html .txt

Usein käytettyjä mediatyyppejä

AddType text/xml .xml
AddType text/xml .xsl
AddType application/x-ogg .ogg
AddType application/smil .smil
AddType video/avi .avi
AddType video/x-ms-wmv .wmv    
AddType application/vnd.ms-excel .xls
Addtype application/msword .doc
Addtype application/x-msaccess .mdb

Salasanasuojaus

Sijoita suojattavassa kansiossa olevaan .htaccess-tiedostoon rivit:

	AuthUserFile /foo/bar/tunnus/.users
	AuthGroupFile /dev/null
	AuthName ByPassword
	AuthType Basic
	<Limit GET>
	require valid-user
	</Limit>

AuthUserFile-kohtaan annettava polku on oltava www-palvelimella toimiva ja sen on osoitettava salasanatiedostoon. Oikean polun voi tarkistaa www.cc.jyu.fi-koneessa.

Salasanan ja käyttäjätunnuksen voi luoda komennolla:

htpasswd .users tunnus

Jos .users-tiedosto luodaan ensimmäistä kertaa tai tyhjennetään niin rivin on oltava muotoa:

htpasswd -c .users tunnus

Automaattinen kielivalinta (content negotiation)

Apache mahdollistaa automaattisen kielivalinnan käyttäjän selaimen asetuksien perusteella.

esimerkki 1 - Multiviews

Lisätään tiedostoihin kieltä koskeva pääte:

index.html.en  
index.html.fi  
index.html.fr

esimerkki 2 - Typemaps

DirectoryIndex index.var index.html

LanguagePriority fi en

AddHandler type-map .var

AddType application/xhtml+xml .xml

index.var-tiedosto:

URI: index.html.fi
Content-Language: fi
Content-Type: text/html

URI: index.html.en
Content-Type: text/html
Content-Language: en

SSI (Server Side Includes)

SSI-komennot ovat HTML-dokumenttiin upotettuja käskyjä joilla voidaan tulostaa muuttujien arvoja tai suorittaa ohjelmia

ATK-keskuksen www-palvelimessa SSI-komentoja sisältävien tiedostojen pääte pitää olla .shtml

Palvelinta voi käskeä tulkitsemaan SSI-komennot mistä tahansa tiedostoista määräämällä:

AddHandler server-parsed .html

Kertoo dokumentin muutosajankohdan:


<!--#echo var="LAST_MODIFIED"-->

Lisää tähän kohtaan dokumenttia tiedoston linkit.ssi sisällön:


<!--#include virtual="linkit.ssi"-->

Esimerkki: pohja.txt

Lisätietoja SSI:stä löytyy osoitteista:

Selainten yleisimmät ongelmat

Suuri osa www-sivujen ongelmista johtuu käytettyjen selainten rikkinäisistä, vääristä tai puutteellisista tavoista implementoida suosituksia.

Käyttäjien kommentit

Kommentoi tätä sivua Lisää uusi kommentti
Kurssimateriaalien käyttäminen kaupallisiin tarkoituksiin tai opetusmateriaalina ilman lupaa on ehdottomasti kielletty!
http://appro.mit.jyu.fi/www/luennot/luento10/
© Antti Ekonoja (anjoekon@jyu.fi) <http://users.jyu.fi/~anjoekon/>
Tommi Lahtonen (tommi.j.lahtonen@jyu.fi) <http://hazor.iki.fi/>
Jukka Mäntylä (jmantyla@iki.fi) <http://www.iki.fi/jmantyla/>
2004-04-21 08:41:20
Informaatioteknologia - Jyväskylän yliopiston IT-tiedekunta ja avoin yliopisto