[MontelLUG] Tomcat e reverse proxy

Samuele samuele.zanin a tiscali.it
Sab 19 Gen 2013 11:43:24 CET


Mio malgrado, ho a che fare (e probabilmente ancor di più in futuro) con
webbeapplichesion.
Quella in oggetto gira su tomcat. L'applicazione è in linguaggio java ed
è generata da un ambiente di sviluppo di terze parti.
Ora, io non me la sento di esporre la macchina con tomcat al mondo, né
ho ip sufficienti per farlo, quindi l'ho proxata come ho fatto tempo fa
con altri programmi che però giravano su apache. Però ho qualche problemino.

Nel dettaglio:
- sia 192.168.0.5 l'ip del server dove gira tomcat;
- sia 192.168.0.1 l'ip del reverse proxy con apache;
- sia 8.8.8.8 l'ip pubblico della macchina che fa da firewall;
- sia 8080 la porta dove gira tomcat;
- sia example.org il tld dell'azienda e sarcasso.example.org l'url al
quale voglio far puntare l'applicazione;
- sia /App/App.htm il "path" esportato da tomcat da richiamare per far
partire l'applicazione;
- assumete che tutte le macchine sono in dmz.

Ho:
- tramite regola di iptables dirottato il traffico in ingresso sulla
porta 443 del firewall (8.8.8.8) sulla porta 443 del reverse proxy
(192.168.0.1)
- ho messo questa configurazione in apache sul proxy:

 <VirtualHost *:443>
       ProxyRequests Off
       ProxyPreserveHost On
       ProxyPass / http://192.168.0.5:8080/App/App.htm
       ProxyPassReverse / http://192.168.0.5:8080/App/App.htm

       ServerName sarcasso.example.org
       ServerAlias sarcasso.example.org
       CustomLog /var/log/apache2/access_domain.log combined
       ErrorLog /var/log/apache2/error_domain.log

       SSLProxyEngine On
       SSLEngine on
       SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
       SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
       BrowserMatch "MSIE [2-6]" \
               nokeepalive ssl-unclean-shutdown \
               downgrade-1.0 force-response-1.0
       # MSIE 7 and newer should be able to use keepalive
       BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

Mi ritrovo che se con il browser apro:
https://sarcasso.example.org
l'applicazione da: caricamento componenti in corso... e rimane li.

Se invece nel proxy scrivo:
       ProxyPass / http://192.168.0.5:8080/
       ProxyPassReverse / http://192.168.0.5:8080/

Quindi dal browser vado in:
https://sarcasso.example.org/App/App.htm
l'applicazione da:
caricamento componenti in corso...
e poi prosegue normalmente.

Quindi in quella che io voglio come configurazione finale, inizia il
caricamento e poi l'applicazione si perde.

Non voglio tenere la seconda opzione del proxy perché in questo modo
espongo tomcat al mondo, inoltre per l'utente finale è una rottura
scrivere https://sarcasso.example.org/App/App.htm
al posto di https://sarcasso.example.org/

Per me il reverse proxy è a posto, ma c'è qualcosa che non va o nella
configurazione di tomcat o nel codice generato dal tool per fare
l'applicazione.

Vorrei trovare una soluzione prima che mi dicano "chissenefrega, esponi
tomcat completamente".






More information about the montellug mailing list