[Apache en tomcat] Één applicatie op specifieke URL

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Nu online

Hero of Time

Moderator LNX

There is only one Legend

Topicstarter
Voor het werk moet ik op een subdomein een enkele applicatie die in Tomcat draait beschikbaar stellen, maar het wil niet helemaal lukken met de configuratie. Omdat de applicatie via een webservice draait (Apache Axis2), geserveerd door Tomcat, wordt de gehele URL niet wat we willen, met als extraatje een potentieel beveiligingsrisico. Onacceptabel dus. Als het voor intern only was, was het op zich geen probleem, maar het moet extern bereikbaar zijn. Dit allemaal via SSL.

Wat ik had:
Mod_JK
Werkt op zich prima, heb ik met een andere applicatie al draaien op een ander subdomein. Punt is wel: security en URL niet zoals het zou moeten. Config had ik als volgt:
code:
1
2
3
4
5
6
<VirtualHost *:443>
    ServerName sub.domein.nl:443
    SSLEngine On
    JkMount /* worker2
    JkMount /*.jsp worker2
</VirtualHost>


De workers.properties is niet zo heel spannend, die is overgenomen van voorbeelden op 't web en sla ik even over.

ProxyPass
Dit geeft de URL die we willen, maar niet de werking. Zo kan ik niet direct een service aanspreken en als ik 't met wat andere regels wil doen, wil 't buiten de opgegeven URL werken. Config:
code:
1
2
3
4
5
6
7
8
<VirtualHost *:443>
    ServerName sub.domein.nl:443
    SSLEngine On
    ProxyRequests Off
    ProxyPreserveHost On
    ProxyPass / http://interne.server:8083/axis2/
    ProxyPassReverse / http://interne.server:8083/axis2/
</VirtualHost>


We hosten de service via Axis2 webservice dus. Met de proxypass komen we via sub.domein.nl op de beginpagina van Axis2. Maar plaatjes bijvoorbeeld op de pagina doen 't niet. Dat blijkt ook, want als ik de muis over "Services" beweeg, is de url sub.domein.nl/axis2/services. Niet goed dus. Als we 't op een submap laten draaien, bijvoorbeeld sub.domein.nl/map/, dan krijgen we dezelfde url van /axis2/, ipv /map/axis2/.
Direct linken naar een service geeft het volgende (even de URL genomen om alle bekende services weer te geven):
<faultstring>
The service cannot be found for the endpoint reference (EPR) /axis2/services/listServices/
</faultstring>
Nu is het ook mogelijk om op een andere poort direct met Tomcat te babbelen. Dat is in feite wat ik met ProxyPass al doe, maar aangezien dat niet 100% werkt, kan 't direct naar Tomcat wel werken. Maar ik heb geen idee hoe ik dat in moet stellen zodat alleen de service die in Axis2 draait extern bereikbaar is. In de configuratie van Tomcat (server.xml) heb ik wat geprobeerd, zonder resultaat. Documentatie is ook niet erg duidelijk, als ik überhaupt al iets kan vinden (wat niet erg makkelijk is, gezien m'n complexe situatie en wensen). M'n Google-fu laat mij hier in de steek.
M'n config idee die ik had, maar niet werkt dus:
code:
1
2
3
4
<Host name="sub.domein.nl" appBase="axis2"
        unpackWARs="true" autoDeploy="true">
<Context path="/" docBase="services/listServices" debug="0" reloadable="true"/>
</Host>



Het maakt mij niet uit of het via Apache gaat, of direct naar Tomcat, als m'n URL maar is zoals we willen, over SSL gaat en met security in gedachte (verborgen deuren die toegang verschaffen tot 't systeem). Een externe partij gaat hier gebruik van maken namelijk en we moeten dus een specifieke URL aangeven waar ze ons systeem kunnen vinden. En iets als /axis2/services/servicenaam/ is erg onhandig. En de security natuurlijk, want via /axis2/axis2-admin kom je zo in de admin console (even aanmelden) en kan je services uitschakelen, toevoegen en verwijderen.
De Tomcat service is onafhankelijk, ik kan klooien met z'n config wat ik wil. Er zijn geen andere services die er aan hangen die in de weg kunnen zitten.

Iemand een briljant idee om dit te laten werken?

Commandline FTW | Tweakt met mate