El objetivo es poder utilizar un único dominio para acceder a distintas instalaciones de una misma o de varias aplicaciones web instaladas en diferentes máquinas y servidores de aplicaciones; para ello hemos utilizado el Apache httpd Web Server de tal manera que permita redirigir las peticiones a diferentes servidores de aplicaciones en función de nuestras necesidades.
La versión instalada de Apache httpd Web Server es la 2.4, ya que ésta incluye el módulo de proxy_html; si se quiere instalar la versión 2.2 de Apache, es necesario añadir el módulo expresamente. Es necesario compilar el Apache con GCC e instalar el Apache Portable Runtime y una versión de Java 1.6 o superior.
Pasos en la instalación:
Instalar JDK
cd /usr/java ./jdk-6u38-linux-x64.bin
Instalación de APR (Apache Portable Runtime)
sudo yum -y install arp apr-devel apr-util apr-util-devel pcre pcre-devel
Instalación de GCC (GNU Compiler Collection)
sudo mkdir /home/ec2-user/gcc cd /home/ec2-user/gcc sudo yum install gcc
Instalar el Apache
cd /home/ec2-user/httpd**** ./configure sudo yum install make sudo make sudo make install
Apache httpd Web Server se instala por defecto en la ruta /usr/local/apache2/
Configurar el httpd Web Server
La configuración del Apache se define en el fichero /usr/local/apache2/conf/httpd.conf. Antes de comenzar a realizar modificaciones es importante hacer una copia de este fichero para restaurarla en caso de ser necesario. Nuestro Apache recibe peticiones por el puerto 8009, que es uno de los que se habilitan en la política de seguridad de Amazon para el Tomcat
Módulos que deben estar activos
Hemos activado todos los módulos excepto (configurar en función de las necesidades)
#LoadModule authz_host_module modules/mod_authz_host.so #LoadModule session_crypto_module modules/mod_session_crypto.so
Es importante incluir estos módulos para poder configurar el proxy
LoadFile /usr/lib64/libxml2.so.2 LoadModule xml2enc_module modules/mod_xml2enc.so LoadModule proxy_html_module modules/mod_proxy_html.so
Configuración del fichero /usr/local/apache2/conf/httpd.conf/httpd.conf
<IfModule mod_proxy.c>
ProxyPreserveHost On
ProxyHTMLEnable On
ProxyPass /manager/ http://1.2.3.4:8080/manager/
ProxyPass /saas01/a4j/ http://1.2.3.4:8080/myapp/a4j/
ProxyPass /saas01/ http://1.2.3.4:8080/myapp/
ProxyPass /myapp/ http://1.2.3.4:8080/myapp/
ProxyPass /express/ http://1.2.3.4:8080/express/
ProxyPassReverse /saas01/a4j/ http://1.2.3.4:8080/myapp/a4j/
ProxyPassReverse /saas01/a4j/ http://1.2.3.4:8080/myapp/a4j/
ProxyPassReverse /saas01/ http://1.2.3.4:8080/myapp/
ProxyPassReverse /myapp/ http://1.2.3.4:8080/myapp/
ProxyPassReverse /express/ http://1.2.3.4:8080/express/
ProxyHTMLURLMap http://1.2.3.4:8080/myapp/a4j/ /saas01/a4j/
ProxyHTMLURLMap http://1.2.3.4:8080/myapp/ /saas01/
ProxyHTMLURLMap http://1.2.3.4:8080/express/ /express/
#peticiones AJAX
<Location /saas01/a4j/>
ProxyPassReverse http://1.2.3.4:8080/saas01/a4j/
ProxyHTMLURLMap /saas01/a4j/ /saas01/
</Location>
<Location /saas01/>
ProxyPassReverse /myapp/
ProxyHTMLURLMap /myapp/ /saas01/
</Location>
<Location /myapp/a4j/>
ProxyPassReverse http://1.2.3.4:8080/saas01/a4j/
ProxyHTMLURLMap /saas01/a4j/ /saas01/a4j/
</Location>
<Location /myapp/>
ProxyPassReverse http://1.2.3.4:8080/saas01/a4j/
ProxyHTMLURLMap /myapp/a4j/ /saas01/a4j/
</Location>
<Location /express/>
ProxyPassReverse http://1.2.3.4:8080/express/
ProxyHTMLURLMap /express/ /express/
</Location>
</IfModule>