Redireccionar tráfico a puerto 8080 en Tomcat8 (Ubuntu 16.0.4)

La actualización de Tomcat7 a Tomcat8, así como de Ubuntu14.0.4 a 16.0.4 ha conllevado que la configuración anterior para redireccionar el tráfico entrante a nuestra aplicación de tomcat no funcione. Se describen los nuevos pasos:

 

1) Indicar la redirección de puerto 80 a 8080 en las reglas de iptables

 

sudo iptables -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-ports 8080

Comprobamos que existe esta nueva regla:

sudo iptables -t nat -L

Lo que debería mostrar por pantalla:

Chain PREROUTING (policy ACCEPT)

target     prot opt source               destination

REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain INPUT (policy ACCEPT)

target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)

target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)

target     prot opt source               destination

Para que estas reglas se guarden en cada reboot del sistema, la forma más sencilla es usar iptables-persistent. Para ello instalamos el paquete:

sudo apt-get install iptables-persistent netfilter-persistent

Podemos entonces guardar las reglas actuales a un archivo (puede que haya que loguearse como superuario y no baste con poner sudo delante):

sudo iptables-save > /etc/iptables/rules.v4

Para que se restauren las reglas guardadas:

sudo iptables-restore < /etc/iptables/rules.v4

Para estar seguros al 100% de que se restablecerá en el reboot:

sudo iptables-save > /etc/iptables.up.rules

 

2) Instalar y configurar apache2

 

Instalamos:

sudo apt-get install apache2

Comprobamos la instalación:

systemctl status apache2

Ahora necesitamos que redirija a la aplicación de tomcat. Instalamos mod_jk:

sudo apt-get install libapache2-mod-jk

Localiza workers.properties. En mi caso estaba en /etc/libapache2-mod-jk/workers.properties y ajustamos la ruta del tomcat8 y del java:

# OPTIONS ( very important for jni mode )

 

#

# workers.tomcat_home should point to the location where you

# installed tomcat. This is where you have your conf, webapps and lib

# directories.

#

workers.tomcat_home=/var/lib/tomcat8

 

#

# workers.java_home should point to your Java installation. Normally

# you should have a bin and lib directories beneath it.

#

workers.java_home=/usr/lib/jvm/java-8-openjdk-amd64/jre

Nos aseguramos que tenemos líneas similares a éstas:

 ....

worker.list=ajp13_worker

 ....

worker.ajp13_worker.port=8009

worker.ajp13_worker.host=localhost

worker.ajp13_worker.type=ajp13

 ....

worker.ajp13_worker.lbfactor=1

 ....

Buscamos el archivo 000-default.conf y editamos. En mi caso estaba en /etc/apache2/sites-available/000-default.conf. Añadimos la siguiente línea:

<VirtualHost *:80>

   .....

   .....

   JkMount /manager/* ajp13_worker

   ....

 </VirtualHost>

Añadimos nuestro host virtual con sus proxys en /etc/apache2/apache2.conf

<VirtualHost *:80>

Servername wwww.datos.ieo.es

ServerAlias datos.ieo.es

ProxyPreserveHost on

ProxyRequests off

        <Proxy *>

          Order deny,allow

          Allow from all

        </Proxy>

ProxyPass /geonetwork ajp://localhost:8009/geonetwork

ProxyPassReverse /geonetwork ajp://localhost:8009/geonetwork

</VirtualHost>

 

3) Ajustamos el Tomcat

Buscamos el archivo server.xml y descomentamos la línea que hace referencia al puerto 8009: 

<!-- Define an AJP 1.3 Connector on port 8009 -->

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

 

4) Reiniciamos Tomcat y Apache
sudo systemctl restart tomcat8
sudo systemctl restart apache

Revision #2
Created Tue, Apr 23, 2019 8:45 AM by Admin
Updated Wed, Apr 24, 2019 12:23 PM by Admin