[LUGOS] Apache konfiguracija in trac

Žiga Böhm Ziga.Boehm at vseved.net
Fri Nov 24 13:30:44 CET 2006


Poganjam Apache 2.0.55 skupaj z mod_python, ki ga potrebujem za trac 
(http://trac.edgewall.org/). "Težava" nastane, ker si mi trac javlja na 
naslovu, za katerega ni bil specifično konfiguriran (da, uporabljam imensko 
virtualno strežbo aka name based virtual hosting), pa mi ni povsem jasno 
zakaj pride do tega pojava!?

1) V /etc/hosts imam zapisani naslednji pretvorbi:
127.0.0.1  localhost
192.168.0.1  trac.nekje.si  trac
192.168.0.1  test.nekjedrugje.si  test

2) Prvi virtualni alias je nastavljen za naslov "localhost" in prisluškuje 
vsem IP naslovom, se pravi da uporabljam zanj direktivi <VirtualHost *:80> in 
ServerName localhost

Posebej imam zanj nastavljen še AliasMatch, ki poskrbi za preumeritev vseh 
naslovov tipa ^/manual - ta virtualni strežnik mi služi za dostop do Apache 
dokumentacije.

3) Drugi virtualni alias je nastavljen na naslov trac.nekje.si in posluša le 
na naslovih 127.0.0.1 in 192.168.0.1, torej zanj uporabljam direktivi 
<VirtualHost 127.0.0.1:80 192.168.0.1:80> in ServerName trac.nekje.si

V _okviru tega drugega_ virtualnega hosta imam nastavljeno še direktivo:
<Location />
  SetHandler mod_python
  ...
</Location>

ki je potrebna, da lovi vse korenske klice virtualnega strežnika za trac.

4) Prvi virtualni strežnik (localhost) je v konf. datoteki referiran pred 
drugim (trac.nekje.si)

5) Posebej imam nastavljen tudi virtualni strežnik, ki lovi vse ostale 
(praviloma neobstoječe) domene in sicer z <VirtualHost _default_:80>, ki jih 
preumerjam k nekemu generičnemu sporočilu.

Preusmerjanje neobstoječih domen deluje bp, Trac tudi - vendar se mi v zgoraj 
omenjeni konfiguraciji trac javlja tudi na naslovu http://localhost/manual, 
čeprav bi se mi morala tu odpreti Apache dokumentacija...

No, razlika s klicanjem naslova http://trac.nekje.si je, da mi v primeru  
klica http://localhost/manual trac vrne napako:
Not Found
No handler matched request to /manual/

Če Drugi virtualni strežnik (glej točko 3) nastavim, da ne posluša na IP 
naslovu 127.0.0.1 (torej samo na naslovu 192.168.0.1:80), stvar deluje povsem 
v skladu s pričakovanji.

Resnično ne razumem, zakaj Apache v takšni konfiguraciji spregleda naslov 
localhost, test.nekjedrugje.si pa razreši pravilno, torej v generično 
sporočilo!

Sumim, da za vsem skupaj stoji mehanizem "name based virtual hostinga" in 
način kako se direktive za imena virtualnih strežnikov razrešujejo v (iste) 
IP naslove... vendar si s tem svojim "gut feelingom" žal ne morem pomagati 
pri iskanju racionalne razlage.

Prosim torej za pomoč bolj izkušenih!

Hvala in lep pozdrav,
Žiga B.


More information about the lugos-list mailing list