[HTTPD MOD_JK TOMCAT] alles gaat naar defaultHost

Pagina: 1
Acties:

  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 05-10 16:09
Ik heb een Apache httpd webserver nu wil ik met behulp van mod_jk redirecten naar een tomcat server. Ik laad de mod_jk module in httpd.conf en verwijs naar een workers.properties files waarin ik tot nu toe slechts 1 worker heb staan. in een virtualhosts configuratie bestand staat de VirtualHost die al het verkeer naar "www.website1.com" naar de tomcat worker moet toesturen, dat doet mod_jk dan ook, maar dan gaat het fout. Tomcat stuurt alles door naar de defaultHost, terwijl ik verwacht dat als je naar www.website1.com surft tomcat de Host met de naam "www.website1.com" gebruikt. als direct naar de tomcat server connect www.website1.com:8081, dan kom ik wel degelijk bij de juiste host terrecht. ik ben hier nu al 2 dagen mee bezig en begin wanhopig te worden...met google vind ik niets ( op 1 soort gelijke probleem na, maar daar bleek de name van het <host> element in tomcat verkeerd te zijn, wat bij mij dus niet het geval is ( het werkt immers als ik direct tomcat connect ).

Hieronder volgen de relevante delen van mijn config files:


workers.properties
code:
1
2
3
4
workers.list=worker1
worker.worker1.port=8509
worker.worker1.host=12.34.56.78
worker.worker1.type=ajp13


vhosts.conf
code:
1
2
3
4
5
6
7
8
NameVirtualHost *.80

<VirtualHost *:80>
   DocumentRoot /opt/websites/website1
   ServerName www.website1.com
   
   JkMount /* worker1
</VirtualHost>


httpd.conf
code:
1
2
3
4
5
LoadModule jk_module modules/mod_jk-1.2.31-httpd-2.2.x.so

JkWorkersFile conf/worker.properties
JkLogLogFile logs/mod_jk.log
JkLogLevel debug


tomcat servlet.xml
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
<Connector port=8081 protocol="HTTP/1.1 redirectPort="8447" enableLookups="false" />
...
<Connector port="8509" protocol="AJP/1.3 redirectPort="8447" enableLookups="false" />
..
<Engine name="catalina" defaultHost="localhost">
<Host name="localhost">
..
</Host>
<Host name="www.website1.com>
   <Alias>website1.com</Alias>
</Host>

</Engine>

  • UnicronNL
  • Registratie: December 2009
  • Laatst online: 29-04-2024
Misschien kan je deze howto gebruiken als voorbeeld?

tomcat-debian-virtualhosts

vanaf punt 6 ongeveer.

(is Duits, maar het is gewoon volgen van de stappen)

[ Voor 4% gewijzigd door UnicronNL op 25-11-2010 20:38 ]


Acties:
  • 0 Henk 'm!

  • JohnR
  • Registratie: April 2003
  • Niet online

JohnR

Koffie is lekker!

Allereerst zou ik persoonlijk eerder gaan voor mod_proxy_ajp in plaats van mod_jk. Deze wordt iets actiever ontwikkeld en de syntax is iets handiger (zeker als je al apache ervaring hebt)

Daarnaast mis je volgens mij de appbase parameter in je server.xml. Misschien is het ook handig om de versie van tomcat even te vermelden. Er zijn wat subtiele verschillen tussen versie 5.5 en versie 6.0

/(bb|[^b]{2})/


Acties:
  • 0 Henk 'm!

  • chrisO
  • Registratie: Mei 2003
  • Laatst online: 05-10 16:09
JohnR schreef op vrijdag 26 november 2010 @ 09:08:
Allereerst zou ik persoonlijk eerder gaan voor mod_proxy_ajp in plaats van mod_jk. Deze wordt iets actiever ontwikkeld en de syntax is iets handiger (zeker als je al apache ervaring hebt)

Daarnaast mis je volgens mij de appbase parameter in je server.xml. Misschien is het ook handig om de versie van tomcat even te vermelden. Er zijn wat subtiele verschillen tussen versie 5.5 en versie 6.0
Ik gebruik tomcat versie 6.0, de appbase staat wel in de server.xml, ben ik alleen vergeten hier neer te zetten. Het probleem zit niet in de config van tomcat, want zoals ik al zei werkt de website wel als ik er direct naar de tomcat server connect www.website1.com:8081. Het werkt enkel niet als ik vanuit Apache geredirect wordt naar Tomcat.
Ik wil eigenlijk bij mod_jk blijven, deze heb ik altijd gebruikt. Het merkwaardige is, dat de setup van een Windows server komt en daar dus altijd heeft gewerkt en nu onder Linux doet Apache of mod_jk iets merkwaardigs waardoor Tomcat altijd de defaulthost kiest, alsof "www.website1.com" niet wordt doorgegeven aan tomcat vanuit Apache/mod_jk, is dit op de een of andere manier te controleren?

Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 15:15
chrisO schreef op vrijdag 26 november 2010 @ 13:50:
[...]
Ik wil eigenlijk bij mod_jk blijven, deze heb ik altijd gebruikt. Het merkwaardige is, dat de setup van een Windows server komt en daar dus altijd heeft gewerkt en nu onder Linux doet Apache of mod_jk iets merkwaardigs waardoor Tomcat altijd de defaulthost kiest, alsof "www.website1.com" niet wordt doorgegeven aan tomcat vanuit Apache/mod_jk, is dit op de een of andere manier te controleren?
Als je met Wireshark (of een dumpfile van tcpdump inleest met Wireshark) snift op de juiste interface kan je direct zien of de juiste host header wordt gestuurd naar Tomcat, Wireshark heeft een decoder voor het AJP protocol.

Acties:
  • 0 Henk 'm!

  • JohnR
  • Registratie: April 2003
  • Niet online

JohnR

Koffie is lekker!

Geeft mod_jk je virtual host header wel aan? Ik zie in je workers.properties staan:
workers.list=worker1
worker.worker1.port=8509
worker.worker1.host=12.34.56.78
worker.worker1.type=ajp13

Forward mod_jk niet gewoon naar 12.34.56.78 en geeft deze geen host-header door? Zou mij persoonlijk niets verbazen. Probeer eens om dit te vervangen door:
workers.list=worker1
worker.worker1.port=8509
worker.worker1.host=www.website1.com
worker.worker1.type=ajp13

/(bb|[^b]{2})/


Acties:
  • 0 Henk 'm!

  • silentsnake
  • Registratie: September 2003
  • Laatst online: 04-10 08:03
Kijk eens of je de jvmRoute in je tomcat config heb gezet. Dit moet gelijk zijn aan wat er in de works.list staat (dus in jouw geval moet de jvmRoute worker1 worden).

Bovendien zou ik niet zo snel van A naar B migreren als je al ervaring hebt met A. Niks mis met mod_jk in het algemeen en wordt nog veel gebruikt. Omdat er niet meer actief aan ontwikkeld wordt betekend niet dat het niet goed werkt - het is een relatief klein project dus op een gegeven moment is zo een project gewoon "af".

Acties:
  • 0 Henk 'm!

  • JohnR
  • Registratie: April 2003
  • Niet online

JohnR

Koffie is lekker!

silentsnake schreef op maandag 29 november 2010 @ 10:52:
Bovendien zou ik niet zo snel van A naar B migreren als je al ervaring hebt met A. Niks mis met mod_jk in het algemeen en wordt nog veel gebruikt. Omdat er niet meer actief aan ontwikkeld wordt betekend niet dat het niet goed werkt - het is een relatief klein project dus op een gegeven moment is zo een project gewoon "af".
Kleitabletten werkten ook prima voor communicatie, net zoals muurschilderingen. Ik geloof dat ze zoiets vooruitgang noemen...

/(bb|[^b]{2})/


Acties:
  • 0 Henk 'm!

  • silentsnake
  • Registratie: September 2003
  • Laatst online: 04-10 08:03
JohnR schreef op maandag 29 november 2010 @ 10:58:
[...]

Kleitabletten werkten ook prima voor communicatie, net zoals muurschilderingen. Ik geloof dat ze zoiets vooruitgang noemen...
Beetje kort door de bocht. Een telefoon bied veel voordelen tegenover kleitabletten en muurschilderingen. Bied mod_proxy_ajp veel voordelen tegenover mod_jk? Naar mijn mening niet veel, zeker als je al ervaring hebt met mod_jk.

Maar we gaan off-topic, dus ik laat het hier verder ook bij :)

Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 15:15
JohnR schreef op maandag 29 november 2010 @ 09:52:
Geeft mod_jk je virtual host header wel aan? Ik zie in je workers.properties staan:
workers.list=worker1
worker.worker1.port=8509
worker.worker1.host=12.34.56.78
worker.worker1.type=ajp13

Forward mod_jk niet gewoon naar 12.34.56.78 en geeft deze geen host-header door? Zou mij persoonlijk niets verbazen. Probeer eens om dit te vervangen door:
workers.list=worker1
worker.worker1.port=8509
worker.worker1.host=www.website1.com
worker.worker1.type=ajp13
Dit is totaal incorrect. De host instelling van een worker geeft de hostname/ip van de Tomcat AJP server aan. Per request zal Apache toch echt de host header doorsturen. Hoe denk je dat dit zou werken wanneer je meerdere hosts/aliases naar Tomcat zou sturen, of de Tomcat alleen naar localhost luistert??

Acties:
  • 0 Henk 'm!

  • JohnR
  • Registratie: April 2003
  • Niet online

JohnR

Koffie is lekker!

matthijsln schreef op maandag 29 november 2010 @ 12:18:
[...]


Dit is totaal incorrect. De host instelling van een worker geeft de hostname/ip van de Tomcat AJP server aan. Per request zal Apache toch echt de host header doorsturen. Hoe denk je dat dit zou werken wanneer je meerdere hosts/aliases naar Tomcat zou sturen, of de Tomcat alleen naar localhost luistert??
De syntax is correct, en hoe ze dat doen? Zoals alle nette applicaties die gebruik kunnen maken van DNS / named based virtual hosting?

/(bb|[^b]{2})/


Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 15:15
chrisO schreef op donderdag 25 november 2010 @ 15:53:
code:
1
2
3
<Host name="www.website1.com>
   <Alias>website1.com</Alias>
</Host>
Ik neem aan dat je in het echt nog wel een " hebt staan na de hostname, voor de rest zie ik niet direct het probleem...

Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 15:15
JohnR schreef op maandag 29 november 2010 @ 12:28:
[...]
De syntax is correct, en hoe ze dat doen? Zoals alle nette applicaties die gebruik kunnen maken van DNS / named based virtual hosting?
Heb je mijn post wel gelezen? Stel Tomcat AJP luistert op 127.0.0.1:8009. En in je worker.worker1.host wil je www.website1.com neerzetten dat resolved naar een publiek IP?

Acties:
  • 0 Henk 'm!

  • silentsnake
  • Registratie: September 2003
  • Laatst online: 04-10 08:03
matthijsln schreef op maandag 29 november 2010 @ 12:31:
[...]


Heb je mijn post wel gelezen? Stel Tomcat AJP luistert op 127.0.0.1:8009. En in je worker.worker1.host wil je www.website1.com neerzetten dat resolved naar een publiek IP?
Hij kan altijd nog iets als interne / externe DNS views hebben, of een aangepaste hosts file. Maar opzich heb je een punt en zeker iets waar de TS naar moet kijken, want het is niet duidelijk uit de TS op te maken.

Acties:
  • 0 Henk 'm!

  • JohnR
  • Registratie: April 2003
  • Niet online

JohnR

Koffie is lekker!

matthijsln schreef op maandag 29 november 2010 @ 12:31:
[...]


Heb je mijn post wel gelezen? Stel Tomcat AJP luistert op 127.0.0.1:8009. En in je worker.worker1.host wil je www.website1.com neerzetten dat resolved naar een publiek IP?
Lekker belangrijk, dan zou ook www.website1.com:8081 niet werken. Met een "stel dat" kun je er een halve wereld bij dromen. Ik beperk me even tot de informatie die ik heb, niet op vage veronderstellingen hoe andere mensen hun machines in willen richten.

/(bb|[^b]{2})/


Acties:
  • 0 Henk 'm!

  • matthijsln
  • Registratie: Augustus 2002
  • Laatst online: 15:15
JohnR schreef op maandag 29 november 2010 @ 15:03:
[...]
Lekker belangrijk, dan zou ook www.website1.com:8081 niet werken. Met een "stel dat" kun je er een halve wereld bij dromen. Ik beperk me even tot de informatie die ik heb, niet op vage veronderstellingen hoe andere mensen hun machines in willen richten.
Mijn punt was: worker.host heeft niks te maken met de host header die in het AJP request staat. De "vage veronderstellingen" waren om duidelijk te maken dat dit een erg onlogische manier zou zijn van mod_jk om dit zo te doen.

Maar goed je kant het even proberen natuurlijk. In plaats van Wireshark is het voor de TS misschien handiger om mod_jk debug logging aan te zetten.
Pagina: 1