Fundamentos de Payara Server Parte 2 - Reenviando peticiones desde Apache a Payara Server en Ubuntu

Photo of Michael Ranaldo by Michael Ranaldo

See here for the original version in English language. 

 En el primer blog de esta serie, hemos configurado nuestro Apache Web Server. Nuestro siguiente paso será configurar el reenvío de peticiones para enviar tráfico a Payara Server desde nuestro servidor Apache. Si necesitas orientación para instalar Payara Server en Ubuntu, ya tenemos una entrada en el blog que cubre la instalación de un JDK y Payara Server que recomendamos que leas antes de continuar con este blog.

 

En qué consiste el reenvío de peticiones?

El reenvio de peticiones consiste en el trabajo que realiza un servidor web en redirigir todas o algunas de las peticiones que recibe a otro servidor web para que las procese. De esta forma, es posible ocultar la ubicacion real del servidor a los usuarios y mantener los sistemas internos detras del servidor Apache, lo que puede resultar en una mejora de rendimiento. Como la mayoría de los servidores web, Apache Web Server puede extenderse con módulos que le añaden la habilidad de reenviar peticiones a un servidor y redireccionar las respuestas por igual. Esto significa que puedes utilizar Apache como un intermediario que esconde las direcciones IP y puertos de red específicos y permite que el usuario reciba las respuestas desde el mismo servidor (por ejemplo, hacer uso de la URL http://localhost en lugar de http://localhost:8080 en la barra de direcciones de tu navegador).

 

Cómo puedo configurar el reenvío de peticiones entre Apache Web Server y Payara Server?

Como comentaba en mi blog anterior, esto puede cambiar dependiendo de cada distribución; en esta entrada, trataremos con el paquete disponible en los repositorios de Ubuntu. El paquete de Ubuntu contiene los binarios de Apache, pero también tiene "herramientas de ayuda" adicionales para gestionar los ficheros de configuración. En Ubuntu 16.04, los dos módulos que necesitamos añadir a Apache son parte del paquete apache2 que instalamos previamente. Puede ser instalado desde el repositorio utilizando:

 

sudo apt install apache2

 

Tener en cuenta que, en versiones anteriores de Ubuntu, necesitarás utilizar "apt-get" en lugar de "apt" en la versión 16.04 y superiores.

 

Vamos a instalar dos módulos para habilitar reenvío de peticiones http, mod_proxy y mod_proxy_http. Con Ubuntu, las herramientas de ayuda gestionan la instalación de estos módulos, para hacerlo más fácil las herramientas buscarán sus propias dependencias y las instalarán y habilitarán también. Sin embargo, mod_proxy_http necesita mod_proxy para funcionar, por lo que necesitaremos el siguiente comando:

 

sudo a2enmod proy_http

 

Fíjate que en estos comandos podemos omitir el prefijo "mod_".

 

Si quisieras deshabilitar un módulo, hay una herramienta compañera de a2enmod llamada a2dismod que es utilizada de la misma manera.

apache payara blog.jpg

 

Como puedes ver en la salida de la línea de comandos, la herramienta ha detectado la dependencia y también ha habilitado mod_proxy. Si tienes un listado de módulos que quieres activar puedes añadirlos después de proxy_http, separados por espacios.

Como hemos cambiado la configuración, debemos reiniciar el servidor con la ayuda de los siguientes comandos (el segundo reinicio es necesario):

 

sudo service apache2 stop

sudo service apache2 start

sudo service apache2 restart

 

Cambiando la configuración

El paquete de Ubuntu de apache2 tiene una configuración de ejemplo de un sitio llamado "000_default". El fichero de configuración para este sitio se puede encontrar en la carpeta /etc/apache2/sites-available y está referenciado con un enlace simbólico hacia la carpeta sites-enabled.

 

Estructura de ficheros de Apache

Generalmente, verás guías en internet refiriéndose a httpd.conf como el fichero de configuración para editar. Este es sólo el fichero de configuración "padre" por defecto. En sistemas Debian/Ubuntu, y sus derivados como Linux Mint, el fichero a buscar es apache2.conf.

 

Ese archivo es procesado, y sus directivas aplicadas, desde la parte superior a la inferior, por lo que si has establecido dos valores para la misma propiedad, el segundo será aplicado únicamente. Más precisamente se aplicarán los dos, pero el primero sólo será aplicado hasta que el segundo sea leído.

 

Este fichero también puede "incluir" específicamente archivos y carpetas, donde cualquier fichero *.conf dentro de una carpeta incluida también será incluido. Estos serán procesados y combinados con el archivo de configuración principal en el punto en el que la sentencia "include" esté escrita. Por lo que la última línea del fichero de configuración principal, si no se ha especificado otro fichero, será la última línea de configuración que será aplicada, sin importar cual sea.

 

La página por defecto de una nueva instalación de Apache en Ubuntu se puede encontrar en /var/www/index.html y muestra una buena visión detallada sobre cómo funciona este proceso.

 

Creando la configuración de un nuevo sitio

Debido a que necesitamos añadir un comportamiento específico, no vamos a utilizar la configuración por defecto. Copia la antigua configuración de sites-available y renómbrala con algo que fácil de recordar.

 

apache payara blog 2.png

Como usuario root, abre el archivo recién copiado en tu editor de texto preferido. Deberías ver algo similar a:

 

apache payara blog 3.png

 

El elemento <VirtualHost> contiene una lista de directivas que indican al servidor sobre como atender a las peticiones recibidas de acuerdo a las condiciones listadas. En este ejemplo, <VirtualHost*:80> gestiona todas las peticiones que llegan al servidor por el puerto 80. Para una explicación más detallada sobre las etiquetas Virtualhost mira la documentación de Apache.

 

Necesitamos añadir dos líneas dentro de la etiqueta <VirtualHost> par indicar a Apache como tratar el tráfico entrante y saliente, una indica donde enviar las peticiones y la otra indica desde donde debe aparecer que proceden las respuestas. Por lo que un usuario que visite http://localhost podrá ser redirigido a nuestro servidor de aplicaciones en http://localhost:8080/, y las respuestas procedentes de http://localhost:8080/ serán reenviadas para que al usuario le aparezca que provienen de http://localhost. Esta configuración asume que Payara Server se ha iniciado con la configuración por defecto, por lo que estará escuchando en el puerto 8080.

Para gestionar el tráfico entrante, añadir la línea:

 

ProxyPass / http://localhost:8080/

 

Esta directiva le indica a Apache que envíe todo el contexto a partir del nombre del dominio a http://localhost:8080, como si el usuario hubiera solicitado recursos directamente esta dirección.

 

ProxiPassReverse / http://localhost:8080/

 

Esta directiva le indica a Apache que haga una redirección inversa de la URL, por lo que a pesar de que la respuesta viene de la instancia de Payara Server en el puerto 8080, la URL se verá como si esta viniera de Apache. Estas dos directivas, cuando se utilizan juntas, permiten evitar el uso de complicadas expresiones regulares con mod_rewrite.

 

Asumiendo que el nombre de dominio que queremos utilizar es, por ejemplo, www.example.com, nuestra configuración indica que una petición a www.example.com/myapp será realmente enviada a PayaraServer como si el usuario hubiera accedido directamente a www.localhost:8080/myapp.

 

El archivo de configuración ahora debe verse como el siguiente ejemplo, he quitado la mayoría de los comentarios para dejar sólo lo que es necesario y se vea más claro:

 

apache payara blog 4.png

 

Para deshabilitar el sitio por defecto y activar nuestra nueva configuración hay que lanzar los siguientes comandos:

 

sudo a2dissite 000-default

sudo a2ensite payaraSite

 

Guarda los cambios del archivo y reinicia el servidor Apache:

 

sudo service apache2 restart

 

Antes de hacer este cambio de configuración, visitar http://localhost/ nos mostrará la siguiente pantalla de bienvenida de Apache:

 

apache payara blog 5.png

 

Pero ahora que hemos añadido nuestra redirección y habilitado las nuevas directivas en nuestra propia configuración de Apache, cuando visitar localhost/index.html seremos enviados a la pantalla de bienvenida de Payara Server:

 

apache payara blog 6.png

 

Ahora tenemos un Servidor Apache HTTP activo actuando como nuestro redireccionador de peticiones (y con el potencial de adicionar nuevos módulos para cubrir otros requerimientos), y Payara Server listo recibir el despliegue de nuevas aplicaciones.

 

Hemos realizado la instalación de ambos servidores, configurado Apache, explorado el sistema de archivos y tenido una breve visión de los comandos de administración, asadmin, de Payara Server.

 

En el próximo blog vamos a ver como extender la funcionalidad en Apache y en Payara Server; veremos como podemos configurar Payara Server para permitir escalabilidad y otras mejoras que podemos añadir a Apache ara mejorar múltiples servidores de backend.

 

Si tienes preguntas sobre este blog, o sobre Payara en general, no dudes en publicar un comentario más abajo o únete a la conversación en el foro de Payara.

 

  See here for the original version in English language. 

 

Payara Server Basics  Articles Series

 

 

Comments