Oracle HTTP Server (OHS) desempeña un papel crucial en la infraestructura oracle, sirviendo como el componente clave para gestionar y enrutar solicitudes HTTP. Una de sus características más importantes es la capacidad de configurar virtual hosts, permitiendo alojar múltiples sitios web en una sola instancia de OHS.

OHS es especialmente funcional para filtrar solicitudes, ya que nos permite realizar muchas configuraciones tales como:

  • Configuración de certificados SSL
  • Configuración de cluster entre nodos de un Weblogic
  • Restringir conexiones por medio de protocolos SSL o por el tamaño del cifrado
  • Evitar el uso de hanshake o cifrados en desuso o deprecados
  • Configuración de proxys, redireccionamiento de solicitudes, rewrites, repositorios públicos, entre otros

La última versión de OHS está basada en Apache 2.4, por lo que todo lo que podamos hacer con un apache, es posible hacerlo con un OHS, con la diferencia del soporte de Oracle y que además el uso de OHS requiere el pago de una licencia a Oracle.

Configuración de un virtual host:

Los virtual host, también llamados anfitrión virtual, permiten alojar múltiples sitios web en un mismo servidor. Esto se logra configurando el servidor para responder a solicitudes con distintos contenidos o comportamientos según el nombre y/o puerto del dominio proporcionado. Esta técnica maximiza la eficiencia y capacidad del servidor, permitiendo gestionar diversos sitios web sin problemas.

Cuando un cliente realiza una solicitud a un servidor web, incluye en la petición un encabezado llamado «Host» que indica el nombre del dominio al que está intentando acceder. Los virtual hosts utilizan esta información para determinar qué contenido o configuración del servidor deben servir en respuesta a esa solicitud.

Hay dos tipos principales de virtual hosts:

  1. Virtual hosts basados en IP: Con esta configuración, el virtual host será asociado a una IP en específico. El OHS utilizará la ip entrante para determinar cuál virtual host debe utilizar y cuales configuraciones debe desplegar, este método es común cuando se tienen varias direcciones IP disponibles en el servidor.
  2. Virtual hosts basados en nombre (Name-Based): Con esta configuración, el virtual host será asociado a un nombre de dominio, esto funciona cuando tenemos muchas ip en un mismo servidor pero queremos que todos nos responda bajo un mismo dominio, de esta forma la respuesta a entregar dependerá de otros factores como puerto, ruta de contexto o subdominio. Este método es más común y eficiente, ya que permite alojar varios sitios web en una única dirección IP.

La configuración de un virtual hosts se realiza en el archivo principal del OHS el httpd.conf, y se puede realizar la siguiente forma:

<VirtualHost *:80>
  ServerName www.oracle-max.com
  DocumentRoot "/ruta/a/tu/sitio1"
</VirtualHost>

<VirtualHost *:80>
  ServerName www.panda.com
  DocumentRoot "/ruta/a/tu/sitio2"
</VirtualHost>

En este ejemplo, hemos definido dos virtual hosts, cada uno asociado a un nombre de servidor (ServerName) y un directorio raíz (DocumentRoot) que apunta al contenido del sitio web correspondiente, donde le indicamos que todo lo que llegue por el puerto 80 se atenderá con alguno de los virtual host, dependiendo el nombre de ServerName.

También podemos configurar cuando la ip entrante sea una en específico:

<VirtualHost 10.128.23.90:80>
  ServerName www.oracle-max.com
  DocumentRoot "/ruta/a/tu/sitio1"
</VirtualHost>

<VirtualHost 192.168.1.40:80>
  ServerName www.panda.com
  DocumentRoot "/ruta/a/tu/sitio2"
</VirtualHost>

Alias y redirecciones:

Los Virtual Hosts también permiten configurar alias y redirecciones para manipular la estructura de URLs, esto lo podemos ver en el siguiente ejemplo:

<VirtualHost *:80>
  ServerName www.oracle-max.com
  DocumentRoot "/ruta/al/sitio"

  Alias "/imagenes" "/ruta/a/imagenes"
  Redirect "/paginaAntigua" "http://www.oracle-max.com/nuevaPagina"
</VirtualHost>

En este caso, hemos configurado un alias para el directorio /imagenes y una redirección desde la URL antigua «/paginaAntigua» a la nueva http://www.oracle-max.com/nuevaPagina.

Tipos de redirecciones

Aparte del comando redirect anterior, el cual solo hace un redireccionamiento de una solicitud únicamente, existen otros comandos para configurar redireccionamientos como rewrite.

Para entender cómo funciona rewrite, lo vamos a explicar con un ejemplo:

Supongamos que tenemos un sitio web con urls antiguas que se deben redirigir a nuevas urls amigables. Utilizaremos mod_rewrite para lograr esto. Supongamos que las URLs antiguas tienen el formato http://tusitio.com/producto?id=123 y deseas redirigirlas a URLs más limpias como http://tusitio.com/producto/123, para lograr esto, lo haremos usando rewrite:

# Habilitar el módulo rewrite
LoadModule rewrite_module modules/mod_rewrite.so

# Configuración del Virtual Host
<VirtualHost *:80>
  ServerName tusitio.com
  DocumentRoot "/ruta/a/tu/sitio"

  <Directory "/ruta/a/tu/sitio">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>

  # Configuración de Rewrite
  RewriteEngine On
  RewriteRule ^producto/([0-9]+)$ /producto?id=$1 [L]
</VirtualHost>

De esta manera le decimos al virtual host que todo lo que se reciba con /producto más un número, por el puerto 80 será redireccionado a /producto/123 con el número colocado.

Condiciones

Al mismo tiempo, podemos manejar condiciones, de modo que si quisieramos que todas las solicitudes se redirigan a una ruta en particular, para ello usaremos RewriteCond y lo podríamos hacer así:

# Habilitar el módulo rewrite
LoadModule rewrite_module modules/mod_rewrite.so

# Configuración del Virtual Host
<VirtualHost *:80>
  ServerName sistemas.oracle-max.com
  DocumentRoot "/ruta/a/tu/sitio"

  <Directory "/ruta/a/tu/sitio">
    Options FollowSymLinks
    AllowOverride All
    Require all granted
  </Directory>

  # Configuración de Rewrite
  RewriteEngine On
  RewriteCond %{HTTP_HOST} ^sistemas.oracle-max.com
  RewriteRule ^/$ http://sistemas.oracle-max.com/pruebas
</VirtualHost>

De esta manera cada vez que un cliente coloca el nombre de dominio sistemas.oracle-max.com será redirigido a la ruta que hayamos configurado en la RewriteRule, en este caso http://sistemas.oracle-max.com/pruebas.

Nota: Dentro de la configuración hemos visto la etiqueta Directory, esta etiqueta se usa para acceder a directorios del sistema operativo o exponerlos por medio del OHS, puedes ver más información sobre esta etiqueta en la siguiente documentación:

SSL y virtual hosts seguros

Para habilitar virtual hosts seguros con SSL, es necesario realizar algunas configuraciones adicionales, para ello únicamente deberemos indicar las rutas donde se encuentra nuestro wallet o keystore que almacena nuestros certificados SSL y el certificado SSL a válidar:

<VirtualHost *:443>
  ServerName www.oracle-max.com
  DocumentRoot "/ruta/a/tu/sitioSeguro"

  SSLEngine on
  SSLCertificateFile "/ruta/al/certificado.crt"
  SSLCertificateKeyFile "/ruta/a/clave_privada.key"
</VirtualHost>

En este ejemplo, hemos definido un virtual host seguro en el puerto 443.

Nota: En algunas ocasiones, la configuración de SSL puede estar en el archivo ssl.conf el cual usualmente se importa dentro de la configuración del httpd.conf, sin embargo, por orden usualmente se manejan por separado.

Existen más configuraciones de SSL para un OHS, para ello les comparto las siguientes documentaciones donde pueden revisarlo más a fondo:

O también con un tipo de certificado distinto, un certificado wildcard:

Existen muchas formas de implementación de un OHS, se puede clusterizar para que funcione como un balanceador de cargas, se puede usar como proxy, como medio para autorizar o denegar solicitudes, entre otros, algunas posibles opciones para usar OHS y configurar virtual hosts pueden ser las siguientes:

  1. Múltiples sitios web en un solo servidor: Un solo servidor OHS puede alojar varios sitios web con nombres de dominio distintos, simplificando la administración y el mantenimiento.
  2. Separación de contenido estático y dinámico: Configurando virtual hosts y alias, es posible separar el contenido estático y dinámico de un sitio web para mejorar la eficiencia y facilitar futuras actualizaciones.
  3. Implementación de seguridad con SSL: Los virtual hosts seguros permiten la implementación de sitios web con comunicaciones cifradas, esencial para garantizar la seguridad de los datos transmitidos, además de separar la configuración http de la https, permitiendo tener múltiples sitios ya sea con o sin SSL.

Hay muchas más posibilidades para usar un OHS pero principalmente, dominar la configuración de virtual hosts amplía las posibilidades de implementación y administración de sitios web o aplicaciones web.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *