Portál AbcLinuxu, 30. dubna 2025 11:26

Virtuální hostitelé a mod_jk

23.2.2006 14:54 | Přečteno: 2163× | Mohlo by se někomu hodit

Včera jsem se dlouhé hodiny snažil propojit Apache a Tomcat s pomocí protokolu AJP/1.3, tj skrze modul mod_jk. Ono mi to tedy v podstatě fungovalo již po instalaci, nikoliv však jen pro vybrané virtuální hostitele. Tápání po problému mě obohatilo o spoustu nových poznatků.

Instalaci jsem prováděl na serveru se SUSE 9.3, Apache je zde ve verzi 2.0.53, Tomcat pak 5.0.30. Po instalaci balíčku s modulem mod_jk-ap20 (nabízí se ve verzi 4.1.30) přibude v adresáři etc/apache2/conf.d soubor jk.conf; vzhledem k tomu, že ve výchozím nastavení v /etc/apache2/default-server.conf se do konfigurace webového serveru vkládají všechny konfigurační soubory z výše zmíněného adresáře, jsou tak po restartu Apache dostupné ukázkové webové aplice pro Tomcat, konkrétně servlets-examples a jsp-examples.

Obsah konfiguračního souboru (minimalizováno pro názornost) vypadá následovně:

<IfModule mod_jk.c>
    JkWorkersFile /etc/tomcat5/base/workers.properties
    JkLogFile /var/log/tomcat5/base/mod_jk.log
    JkLogLevel error
    Alias /servlets-examples "/srv/www/tomcat5/base/webapps/servlets-examples"
    <Directory "/srv/www/tomcat5/base/webapps/servlets-examples">
	Options Indexes FollowSymLinks
	allow from all
    </Directory>
    JkMount /servlets-examples/servlet/* ajp13
    <Location "/servlets-examples/WEB-INF/">
	AllowOverride None
	deny from all
    </Location>
</IfModule>
Zajímavější jsou parametry začínající Jk:

Jak již jsem naznačil v úvodu, takto nadefinováno a nainstalováno vše funguje. Provozuji však na serveru vícero virtuálních hostitelů a připadá mi zbytečné, aby Tomcat byl navázán i tam, kde to nepotřebuji. Celkem přirozeně jsem proto zrušil odpovídající direktivu v default-server.conf a přidal ji do vybraných virtuálních hostitelů. Kupodivu to takto nefunguje – nevím proč, v dokumentaci jsem k tomu nic nenašel, ale parametr JkWorkersFile musí být uveden v konfiguračních souborech na místě, kde se uplatní pro všechny virtuální hosty (tedy například právě v default-server.conf)! Kýženého výsledku lze dosáhnout tak, že v konfiguraci virtuálních hostitelů budou ty ostatní parametry, tedy zejména odpovídající položka JkMount.

Na další zádrhel v této souvislosti jsem narazil u virtuálních hostitelů v Tomcatu. Ty se definují uvedením platného doménového jména u parametru name kontejneru Host v konfiguračním souboru Tomcatu server.xml. Pro server mám v DNS záznam typu *.muj.server.cz -> muj.server.cz (wildcard DNS item, někde jsem o tom slyšel jako o doménovém koši) – správného virtuálního hostitele pak Apache vybere na základě jména, funguje to bezchybně. Nikoliv však v Tomcatu, přestože je cokoliv.muj.server.com v server.xml definován, odpovědi od http://cokoliv.muj.server.com:8080 se nikdy nedočkám :-( Proč, proč, proč?

       

Hodnocení: 67 %

        špatnédobré        

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře. , Tisk

Vložit další komentář

23.2.2006 15:51 Leoš Literák | skóre: 74 | blog: LL | Praha
Rozbalit Rozbalit vše Re: Virtuální hostitelé a mod_jk
Odpovědět | Sbalit | Link | Blokovat | Admin
Kdysi jsem uvazoval o mod_jk, ale dosti se mi nelibil fakt, ze ztratim pristup k originalni IP adrese, ze ktere byl vyslan pozadavek. V requestu byl vzdycky jen apache. Diky tomu neni mozne delat treba blokovani IP adres, ktere jiz hlasovaly atd. Nasli uz vyvojari mod_jk nejake reseni?
Zakladatel tohoto portálu. Twitter, LinkedIn, blog, StackOverflow
23.2.2006 16:48 Peter Figura | skóre: 12 | blog: pefi | Modra
Rozbalit Rozbalit vše Re: Virtuální hostitelé a mod_jk
Ja som nemal problem so ziskanim originalnej IP adresy (request.getRemoteAddr()), aj ked to islo cez mod_jk. Funguje to minimalne 5-6 rokov.
24.2.2006 11:19 podlesh | skóre: 38 | Freiburg im Breisgau
Rozbalit Rozbalit vše Re: Virtuální hostitelé a mod_jk
V životě jsem o tomto něčem takovém neslyšel, IP adresa je normálně přístupná.
23.2.2006 20:26 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
Rozbalit Rozbalit vše Re: Virtuální hostitelé a mod_jk
Odpovědět | Sbalit | Link | Blokovat | Admin
Tohle mám já v server.xml tohle a funguje mi to:
...
<Engine name="Catalina" defaultHost="localhost" debug="0">
...
  <Host name="localhost" debug="0" appBase="webapps-default"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">
    <Logger className="org.apache.catalina.logger.FileLogger"
          directory="logs"  prefix="localhost_log." suffix=".txt"
          timestamp="true"/>
  </Host>

  <Host appBase="webapps-virtual/jerryweb.info" name="jerryweb.info">
    <Alias>www.jerryweb.info</Alias>
    <Alias>jaros.org</Alias>
    <Logger className="org.apache.catalina.logger.FileLogger"
         directory="logs" prefix="jerryweb_log."
         suffix=".txt" timestamp="true"/>
    <Context path="" docBase="" />
  </Host>
...
</Engine>
Takto nastavených virtuálních serverů mám samozřejmě víc, konfigurační soubory pro jednotlivé aplikace pak mám v conf/Catalina/<jmeno_hostitele>/. U Apache mám v konfiguraci jednotlivých virtuálních serverů pouze JkMount resp. JkUnmount, zbytek mám nastaven jednotně pro celý webserver. Virtuální servery mi fungují jak při přístupu přes mod_jk, tak při přímém přístupu na Tomcata přes HTTP (pokud ho povolím).

Co se týče přístupu k IP adrese browseru, s request.getRemoteAddr() jsem také nikdy problém nezaznamenal.
23.2.2006 20:36 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
Rozbalit Rozbalit vše Re: Virtuální hostitelé a mod_jk
PS: abych nezapomněl na aktuální verze:
emerge -pv tomcat mod_jk

These are the packages that I would merge, in order:

Calculating dependencies ...done!
[ebuild   R   ] www-servers/tomcat-5.0.27-r6  -doc -jikes 0 kB
[ebuild   R   ] www-apache/mod_jk-1.2.13  +apache2 707 kB

Total size of downloads: 707 kB

Založit nové vláknoNahoru

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.