Preparar Nginx para que haga su trabajo de modo externo

  En entradas anteriores ya se ha hablado de Nginx y se han mostrado algunas de sus propiedades.
  Sin embargo, hasta ahora se ha visto que este servidor de red se encontraba en el mismo equipo informático que los otros programas con los que trabajaba cuando lo más habitual es que este se encuentre en un equipo informático (o máquina virtual) de servidor y los programas que controla en otro (u otros) equipo informático de servidor.
  Por lo tanto, en la presente entrada se explicará el modo de configurar un servidor de red Nginx en un equipo informático, desde el que se controlarán dos máquinas virtuales de virtualizador KVM: una de ellas con dos contenedores de red Tomcat (uno con dos aplicaciones instaladas, y el otro con otra aplicación), y la otra con otro servidor de red Nginx sirviendo una página web hecha con Wordpress.
  Los ejemplos que ilustran esta explicación se han hecho con Debian 9 como sistema operativo base en las tres máquinas informáticas implicadas, los servidores de red son Nginx 1.14, y los contenedores de red son Tomcat 8.

CONFIGURACIÓN DEL NGINX PRINCIPAL

  Con el servidor de red ya instalado y debidamente configurado de base (si no es así, puede verse cómo se hace en el siguiente enlace) en la máquina principal, debe crearse un dominio principal (llamado en el ejemplo "fct.net"). Este dominio se formará a partir de un archivo alojado en la ruta "/etc/nginx/sites-available/" que se llamará igual que el dominio, y que se creará desde el archivo "default" situado en la misma ruta. El archivo deberá quedar parecido al de la siguiente imagen (obviando las diferencias relevantes).
  Ahora se debe crear la carpeta "log" y los archivos de registro especificados en el archivo anterior ("fct.net.access.log" y "fct.net.error.log", en el ejemplo) en su interior. Para ello se emplea el comando mkdir -p log (anteponiendo sudo si no se está como administrador), se entra en el directorio recién creado y se utiliza nano fct.net.access.log (anteponiendo sudo si no se está como administrador), y nano fct.net.error.log (anteponiendo sudo si no se está como administrador). A continuación, se regresa al directorio anterior y se cambian el dueño y el grupo de la carpeta recién creada de modo recursivo mediante el comando chown -R www-data:www-data log (anteponiendo sudo si no se está como administrador), después se cambian los permisos de la misma carpeta utilizando el comando chmod -R 755 log (anteponiendo sudo si no se está como administrador).
  Finalmente, se pone en línea el archivo creado en "sites-available" haciendo un enlace simbólico empleando el comando ln -s /etc/nginx/sites-available/fct.net /etc/nginx/sites-enabled/fct.net (anteponiendo sudo si no se está como administrador).
  Puede comprobarse, escribiendo la dirección IP del dominio, o su nombre (si se han hehco las gestiones necesarias editando el archivo "/etc/hosts" y escribiendo la dirección IP y el nombre del dominio en una sola línea y reiniciando el servicio de red), en la barra de direcciones del navegador de red, que todo está correcto si aparece la página principal que se haya puesto en "var/www/html/" (o la página inicial de Nginx si no se ha puesto ninguna otra).
  Ahora que está creado el dominio principal, se crearán los subdominios con las aplicaciones de las máquinas virtuales (todas estas configuraciones deben hacerse como administrador).
  Cada uno de los subdominios se formará creando un nuevo archivo de configuración específico en la ruta "/etc/nginx/sites-available" con el nombre representativo de cada subdominio, y creando y configurando las carpetas y archivos necesarios en la ruta "/var/www/". El mencionado archivo de configuración debe crearse como si fuera el de un Nginx que estuviera dentro de la misma máquina que los servidores de las aplicaciones, pero sin los bloques de directivas referentes a las características especiales de cada aplicación (Java, PHP, etc.).
  De este modo, el archivo referente al subdominio "svelb1.fct.net" deberá verse similar a la siguiente imagen.
  El del subdominio "enxe1801.click.enxenio.fct.net" deberá ser similar a la siguiente imagen.
  La siguiente imagen muestra el archivo de configuración de Nginx para el subdominio de ejemplo "enxe1801.cli.enxenio.fct.net".
  Por último, la imagen del subdominio de ejemplo "svelb2.fct.net" muestra cómo debería ser el archivo de configuración del Nginx externo alojado en la máquina física.


CONFIGURACIÓN DE TOMCAT

  Asumiendo que se ha creado una máquina virtual en KVM (si no es así, consultar en el siguiente enlace), a la que se llamará MV1, y que se han instalado en ella el sistema operativo de servidor base, y los dos programas Tomcat, cada uno de ellos debidamente configurado, y sus correspondientes aplicaciones (si no es así, ver el siguiente enlace para comprobar como se instala, y este otro para conocer el modo de instalar una aplicación en él), se debe editar el archivo "server.xml" (como administrador) y escribir los bloques necesarios con la directiva "<Host>" (uno por cada aplicación instalada en cada uno de los contenedores de red). En el caso de que ya tuvieran su propio dominio, se añadirá al bloque (bajo la primera etiqueta de la directiva "<Host>") la directiva "<Alias>" con el nombre del subdominio (otra opción con el mismo resultado es replicar la aplicación con el nombre del subdominio donde corresponda y crear el bloque de la directiva "<Host>" específica para la réplica). Los cambios necesarios del primer Tomcat deberían quedar de un modo similar al de la siguiente imagen (donde hay instaladas dos aplicaciones).
  En el segundo Tomcat, la directiva "<Host>" debería quedar de un modo similar al que se muestra en la imagen.


CONFIGURACIÓN DEL NGINX SECUNDARIO

  Tras haber creado y configurado debidamente la segunda máquina virtual, a la que se llamará MV2, e instalado tanto el sistema operativo de servidor base como el Nginx y todo lo necesario para que el sitio web que sirva funcione correctamente, se creará el dominio propio de ese anfitrión configurando un archivo en la ruta "/etc/nginx/sites-available/" con un nombre significativo. En dicho archivo, además de los bloques de directivas genéricos para que funcione cualquier dominio, debe añadirse un bloque específico para el dominio en concreto que represente las características especiales que este necesite (en este ejemplo, las características referentes a la interpretación del lenguaje PHP del sitio web). Por lo tanto, el archivo de configuración antes mencionado, deberá quedar de un modo parecido al de la siguiente imagen.

  Naturalmente, además del archivo, hay que preparar los directorios donde se alojará el sitio web, y todo lo relacionado con él, como corresponde (ver el siguiente enlace si no se sabe como instalar un gestor de contenidos en Nginx) que, básicamente coincide con los preparativos normales de Nginx vistos en el primer apartado de la presente entrada.


ÚLTIMAS CONFIGURACIONES

  A continuación hay que poner en red todas las máquinas informáticas implicadas. Para ello (suponiendo que la configuración de red de cada una de ellas está hecha correctamente), hay que editar el archivo "hosts" (como administrador), alojado en el directorio "etc", y escribir las direcciones IP y los nombres de dominio de todas las máquinas y dominios implicados (la IP y el nombre de dominio propios de cada máquina ya aparecen en el archivo). De este modo, el archivo "hosts" de la máquina principal tendría que ser similar al de la siguiente imagen (puede verse que la dirección IP para los subdominios en este ejemplo es "192.168.0.1", mientras que la dirección del dominio principal es "127.0.1.1", las de dos de los dominios pertenecientes a los subdominios es "192. 168.0.11", y la del otro dominio perteneciente al subdominio es "192.168.0.15").
  Asimismo, el archivo "hosts" de MV1 debería quedar de una manera parecida a la siguiente imagen.
  Por su parte, el archivo "hosts" de MV2, debería parecerse al de la siguiente imagen.
  Por último, se debe editar, como administrador, el archivo "networks" (ubicado en el directorio "etc") para establecer la nueva red interna (si no estaba establecida ya). Esto también debe hacerse en todos los equipos implicados, en los que se debe añadir al final de la lista la misma línea, compuesta por nombre y dirección IP terminada en ".0" basada en las direcciones IP de todos los dominios implicados (en este ejemplo, la red se llama "red-elb1" y su IP es "192.168.0.0"). El resultado debe ser similar al de la siguiente imagen del equipo principal.
  En el caso de MV1, el archivo "networks" debe quedar de un modo parecido al de la siguiente imagen.
   Y en MV2, este archivo debe tener un aspecto parecido al del de la siguiente imagen.
  Finalmente, se debe reiniciar la red de las tres máquinas utilizando el comando systemctl restart networking (anteponiendo sudo si no se está como administrador). También hay que reiniciar el Nginx principal [comando systemctl restart nginx (anteponiendo sudo si no se está como administrador)], los dos programas Tomcat mediante el comando systemctl restart <nombre del serrvicio Tomcat> (anteponiendo sudo si no se está como administrador), y el programa Nginx secundario con el mismo comando que se utilizó para reiniciar el principal.

  Pueden comprobarse los resultados escribiendo el nombre de cada uno de los subdominios en la barra de direcciones del navegador de red.






  Todo este proceso puede hacerse también con varios dominios en lugar de con un dominio y varios subdominios, pero hay que especificar en el archivo del Nginx principal que es el dominio principal escribiendo "default_server" al final de la primera línea de "listen" (pero antes del ";").

  Aguardo que la presente entrada haya sido del gusto del lector. En caso afirmativo, espero que la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.