Home » Risorse

Apache Reverse Proxy e Liferay

26 settembre 2006

I portal e i CMS Java vengono distribuiti tipicamente in bundle con un servlet container e Database per evitare all’utente una noisa configurazione e setup.
Questa è un’ottima notizia per chi vuole esporre un servizio senza perdere tempo con configurazioni JDBC, DataSource, MailSession, alberi JNDI, etc.

Immaginiamo di voler installare Liferay in un ambiente di produzione, giusto dietro il nostro web server di fiducia, Apache httpd. Cosa complica la ns. vita? La versione professional di Liferay che vogliamo deployare gira su tomcat in una macchina differente da quella del web server. Configuriamo quindi Apache in modo che si comporti da reverse proxy nei confronti della macchina con Liferay.

    ServerAdmin domain@yourdomain.com
    ServerName www.yourdomain.com
    ProxyRequests Off
    ProxyPass / http://liferaymachine:8080/
    ProxyPassReverse / http://liferaymachine:8080/
    ProxyPass /c http://liferaymachine:8080/c
    ProxyPassReverse /c http://liferaymachine:8080/c

Spesso i custom tag dei portal e i meccanismi intra-portlet creano link non-relativi che “rompono” magicamente il nostro gioco. Ovvero, le portlet di liferay utilizzano le Servlet API getServerName() e getServerPort() per generare link a varie risorse nel portale. Possiamo trovarci ancora nella situazione di avere risorse che puntano a http://liferaymachine:8080 invece che http://www.yourdomain.com. Siamo quindi nella situazione in cui i link che l’utente clicca puntano ad una macchina della nostra rete interna e sono di conseguenza irraggiungibili.

L’ultimo passo è quello di ‘dire’ al Tomcat di Liferay che verrà utilizzato passando attraverso un proxy. Ciò avviene con le direttive proxyName e proxyPort del connector utilizzato (in conf/server.xml)

Connector port="8080"
          proxyName="www.yourdomain.com"
          proxyPort="80"

Ecco quindi risolti i nostri problemi. Ciò è tutto quello che serve per installare correttamente un reverse proxy e fare girare il nostro Liferay.

Riferimenti: