Tutorial: Configuración de NGINX y NGINX Plus como servidor web y proxy inverso en AWS

NGINX | 12 de noviembre de 2021

Desde su lanzamiento hace más de 15 años, NGINX ha ido ganando popularidad de forma constante y ahora es el servidor web más popular del mundo, y presta servicio a más de [ngx_snippet name=’number-sites’] sitios web. En este caso, creemos que lo más sensato es seguir a la mayoría y utilizar NGINX para todas sus necesidades de servicio web, además de aprovechar sus funciones como proxy inverso, caché de contenido, balanceador de carga, puerta de enlace de API, entre otras.

Esta entrada de blog le guía para poner en marcha NGINX en Ubuntu 20.04 en Amazon Web Services (AWS) mediante una configuración fácil de usar que no afecta a los ajustes de su ordenador personal. Abarca tanto NGINX como NGINX Plus, la versión con soporte comercial que incluye funciones adicionales de nivel empresarial.

Una vez completados los pasos que se indican aquí, quizá le interese continuar con la formación NGINX Core (dirigida por un instructor o bajo demanda), un curso de jornada completa en el que aprenderá a configurar, administrar y gestionar NGINX. El curso también le prepara para nuestros otros cursos sobre temas avanzados, tanto dirigidos por un instructor como a su propio ritmo.

El tutorial incluye instrucciones para realizar estas tareas:

Acceder a un terminal

Para este tutorial, necesita un terminal para conectarse a su instancia de Amazon Elastic Compute Cloud (EC2). Los Mac incluyen un terminal, pero los usuarios de Windows deben descargar PuTTY o una herramienta equivalente. Si prefiere utilizar su propio terminal local para configurar NGINX o NGINX Plus y servir contenido web, puede pasar directamente a Configuración de AWS.

Acceder a un terminal en macOS

En los Mac, puedes utilizar la herramienta integrada «Terminal» para hacer todo lo que se explica en este tutorial.

  1. Haz clic en el icono de la lupa situado en el extremo derecho de la barra superior de la pantalla.
  2. Escriba terminal en el cuadro emergente y pulse Intro. Se abrirá una ventana de terminal independiente.

Acceder a un terminal en Windows

Windows no incluye un terminal integrado, por lo que tendrás que descargar uno de Internet. Al igual que AWS, recomendamos PuTTY, un cliente ssh utilizado en todo el mundo.

  1. Accede a la página de descarga de PuTTY.
  2. Descarga e instala el archivo en la ubicación que prefieras y, a continuación, ábrelo. Sin embargo, no podrás acceder al terminal propiamente dicho hasta que completes los pasos de Configuración de AWS.

Configuración de AWS

En este tutorial, suponemos que dispone de una Amazon Virtual Private Cloud (VPC) y que puede utilizar la configuración de VPC predeterminada que se crea con la mayoría de las cuentas. En esta sección, configurará su implementación de AWS creando una instancia EC2 y conectándose a ella.

Nota: El siguiente procedimiento y las capturas de pantalla para crear una instancia EC2 se verificaron en el momento de redactar este documento, pero AWS puede modificarlos. Adapte las instrucciones según sea necesario.

  1. En la página de inicio de AWS, inicie sesión en la consola de administración de AWS o, si es necesario, cree primero una cuenta.
  2. Haga clic en Servicios en la barra de título de la consola y, a continuación, en EC2 en la sección Informática.
    Captura de pantalla que muestra la selección de «EC2» en la página «Servicios» de AWS
  3. Haz clic en el botón Launch Instance de la página del panel de EC2 que se abre.
  4. En la página Paso 1, haga clic en el botón Seleccionar de la fila Ubuntu Server 20.04 LTS (HVM), tipo de volumen SSD y mantenga seleccionada la arquitectura predeterminada de 64 bits (x86).
    Captura de pantalla de la página «Paso 1» del asistente de creación de instancias de Amazon EC2
  5. En la página Paso 2, seleccione el tipo de instancia t2.micro, que en el momento de redactar este documento aparece marcado como apto para el nivel gratuito y está seleccionado de forma predeterminada. Haga clic en el botón Siguiente: Configurar detalles de la instancia.
    Captura de pantalla de la página «Paso 2» del asistente de creación de instancias de Amazon EC2
  6. En la página del Paso 3, asegúrese de que la VPC que desea utilizar esté seleccionada en el campo Red, y de que el campo Asignar IP pública automáticamente esté configurado en la opción predeterminada Usar configuración de subred (Habilitar) o en Habilitar. Deje el resto de los ajustes con sus valores predeterminados.
    Captura de pantalla de la página «Paso 3» del asistente de creación de instancias de Amazon EC2
  7. Haz clic en «6. Configure Security Group» en la parte superior de la página.
  8. En la página del Paso 6, siga estos pasos para permitir el tráfico HTTP y HTTPS entrante (de forma predeterminada, las instancias EC2 solo aceptan tráfico SSH):
    Captura de pantalla de la página «Paso 6» del asistente de creación de instancias de Amazon EC2
    • Haga clic en el botón Añadir regla situado debajo de la tabla y, a continuación, seleccione HTTP en el menú desplegable de la columna Tipo. Para este tutorial, permitiremos el acceso desde cualquier dirección IP (el valor de la columna Origen es Cualquier lugar 0.0.0.0/0, ::/0). Para los entornos de producción, le recomendamos que siga la advertencia de la página, que exige utilizar grupos de seguridad para controlar el acceso.
    • Repita el paso anterior para HTTPS.
    • Haz clic en el botón Revisar e iniciar situado en la parte inferior de la página.
  9. En la página del Paso 7, haga clic en el botón Iniciar situado en la parte inferior.
  10. En el cuadro emergente, crea un nuevo par de claves:
    Captura de pantalla de la ventana emergente «Seleccionar un par de claves existente o crear uno nuevo» de Amazon EC2
    • Selecciona Crear un nuevo par de claves en el menú desplegable superior.
    • Selecciona un tipo de par de claves. En este tutorial, seleccionaremos RSA.
    • Escriba un nombre en el campo Nombre del par de claves, como NGINX_key.
    • Haga clic en el botón Descargar par de claves.
    • Como se muestra en la captura de pantalla animada que aparece a continuación, una casilla de verificación sustituye al botón Descargar par de claves. Márquela para indicar que puede acceder a la clave privada.
    • Haz clic en el botón Launch Instances.
  11. En el administrador de archivos, mueva el archivo descargado .pem (en el tutorial, NGINX_key.pem) a una ubicación segura. En este tutorial, lo guardaremos en el directorio /Desktop/NGINX.
  12. Si utiliza un terminal de Windows, siga las instrucciones de AWS para descargar la utilidad PuTTYgen y convertir el archivo .pem en un archivo .ppk.
  13. En la página Estado del lanzamiento, haga clic en el botón Ver instancias situado en la parte inferior.
  14. En la página Instancias que se abre, la nueva instancia aparece en la tabla. Asígnele un nombre:
    Captura de pantalla de la página «Instances» de Amazon EC2 en la que se muestra la edición del nombre de una instancia
    • Haz clic en el icono del lápiz de la columna «Nombre».
    • Escriba el nombre en el cuadro emergente Editar nombre y haga clic en el botón Guardar.
  15. Haz clic en el botón «Conectar» situado en la parte superior de la pantalla. Se abrirá una ventana como la siguiente. Abre la pestaña del cliente SSH y sigue las instrucciones para conectarte a la instancia. Si utilizas Windows, sustituye .ppk por .pem en los comandos.
    Captura de pantalla de la ventana emergente «Conectar a la instancia» de Amazon EC2

Instalación del software NGINX

Ahora que su entorno de AWS está configurado, es el momento de instalar NGINX Open Source o NGINX Plus, que puede probar gratis durante 30 días. Ambas opciones son válidas para este tutorial, pero si desea explorar más a fondo las funciones avanzadas de NGINX Plus, solicite una prueba gratuita.

Instalación de NGINX Open Source

La mayoría de las distribuciones de Linux y variantes de BSD ofrecen NGINX Open Source en sus repositorios de paquetes estándar, pero normalmente no se trata de la versión más reciente. Recomendamos descargar NGINX Open Source directamente desde nginx.org. Solo hay que seguir unos pocos pasos adicionales para añadir el repositorio de NGINX al gestor de paquetes de Ubuntu (apt).

Para instalar NGINX Open Source, siga estos pasos:

  1. Accede a tu terminal.
  2. Descarga la clave de firma de NGINX:
$ sudo wget http://nginx.org/keys/nginx_signing.key
  1. Añade la clave:
$ sudo apt-key add nginx_signing.key
  1. Cambie al directorio /etc/apt.
$ cd /etc/apt
  1. Edita el archivo sources.list, añadiendo este texto al final:
deb http://nginx.org/packages/ubuntu focal nginx
deb-src http://nginx.org/packages/ubuntu focal nginx
  1. Nota: La palabra clave focal de cada una de estas líneas corresponde a Ubuntu 20.04. Si utiliza una versión diferente de Ubuntu, sustituya la primera palabra de su nombre en clave de la versión (por ejemplo, bionic para Ubuntu 18.04).
  2. Actualiza el software NGINX:
$ sudo apt-get update
  1. Instala NGINX:
$ sudo apt-get install nginx
  1. Escribe Y cuando se te solicite.
  2. Inicia NGINX:
$ sudo systemctl start nginx.service
  1. Comprueba su estado:
$ sudo systemctl status nginx.service
  1. Continúe con «Abrir su página web».

Instalación de NGINX Plus

  1. Si aún no dispone de NGINX Plus, regístrese para disfrutar de una prueba gratuita de 30 días.
  2. Cuando reciba la notificación por correo electrónico de que su suscripción de prueba está disponible, siga las instrucciones proporcionadas para descargar el certificado de seguridad, la clave privada y el JWT y, a continuación, instalar NGINX Plus.
  3. Cuando finalice la instalación y NGINX Plus esté en funcionamiento, continúe con Abrir su página web.

Abrir su página web

Ahora que ha iniciado el software NGINX, eche un vistazo a la página web que NGINX y NGINX Plus ofrecen de forma predeterminada antes de configurarlos para que sirvan el contenido de su sitio. Siga estos pasos:

  1. Vaya a la pestaña Instancias del panel de EC2 si aún no se encuentra en ella. (Una forma de hacerlo es hacer clic en Servicios en la barra de navegación superior de la consola, en EC2 en la sección Informática y en Instancias en la columna de navegación de la izquierda.)
  2. Desplázate hacia la derecha en la tabla hasta que veas la dirección IP pública de la instancia en la columna Dirección IPv4 pública (en la captura de pantalla, es 3.22.51.xxx). Selecciona la dirección y cópiala en el portapapeles.
    Captura de pantalla de la página «Instancias» de Amazon EC2 que muestra el campo «Dirección IPv4 pública» de una instancia
  3. Abra una nueva pestaña del navegador y pegue la dirección en la barra de direcciones. Aparecerá la página predeterminada Welcome to nginx!, lo que indica que NGINX está instalado y en funcionamiento, pero aún no se ha configurado.
    La página de bienvenida confirma que el proxy inverso y el servidor web NGINX están en funcionamiento

Configuración de archivos de ejemplo

Con una versión operativa de NGINX o NGINX Plus instalada, ¡es hora de sacarle partido! Empiece por configurar algunos archivos y directorios.

  1. Cambie al directorio personal si aún no se encuentra en él. En las instrucciones siguientes, es /home/ubuntu.
  2. Crea un directorio llamado «public_html» y accede a él.
  3. En el directorio public_html, cree un archivo llamado index.html y un directorio llamado application1.
  4. En el directorio application1, crea un archivo llamado app1.html que contenga algo de texto.
  5. Vuelva a su directorio de inicio.
  6. Crea un directorio llamado «data».
  7. En el directorio data, crea un directorio llamado images.

Servir páginas e imágenes

Nuestro primer caso de uso de NGINX o NGINX Plus consiste en servir páginas e imágenes a los usuarios a través de una página web.

  1. Cambie al directorio /etc/nginx/conf.d.
  2. Cambie el nombre de default.conf a default.conf.bak para evitar que NGINX o NGINX Plus lo utilicen como archivo de configuración predeterminado.
  3. Cree un archivo llamado server1.conf con la siguiente configuración:
server {    root /home/ubuntu/public_html;

    location /application1 {  }

    location /images {		
        root /home/ubuntu/data;	
    }
}
  1. Documentación de las directivas: location, root, server
  2. Cambia al directorio ~/data/images.
  3. Busca una imagen que quieras servir y cópiala en el directorio (~/data/images). Por ejemplo, el siguiente comando copia el logotipo de NGINX:
$ curl -o NGINX-logo.png https://www.nginx.com/wp-content/uploads/2021/11/NGINX-logo-2020.png
  1. Recargue NGINX o NGINX Plus:
$ sudo nginx -s reload
  1. En un navegador web, solicita la imagen en esta URL, donde NGINX-server es la dirección IP pública de tu instancia EC2: https://NGINX-server/images/NGINX-logo.png
  2. Acceda también a la aplicación y observe qué obtiene:https://NGINX-server/application1/app1.html

Configuración de un servidor proxy

Ahora que ya dispone de un servidor web operativo, es el momento de aprender a configurarlo para enrutar el tráfico. Esta función le permite redirigir el tráfico a otros servidores y supone un paso importante para configurar el balanceo de carga. Siga estos pasos:

  1. En el directorio ~/data, cree un directorio llamado server2.
  2. En el directorio server2, cree un directorio llamado sampleApp.
  3. En el directorio sampleApp, crea un archivo llamado index.html que contenga algo de texto.
  4. Cambie al directorio /etc/nginx/conf.d.
  5. Cree un archivo llamado server2.conf con esta configuración:
server {    listen 8080;
    root /home/ubuntu/data/server2;
}
  1. Documentación de las directivas: listen, root, server
  2. Modifique server1.conf añadiendo una directiva proxy_pass en el primer bloque location, como se indica a continuación:
server {    root /home/ubuntu/public_html;

    location /application1 {
        proxy_pass http://localhost:8080/sampleApp;
    }

    location /images {
        root /home/ubuntu/data;
    }
}
  1. Documentación de las directivas: location, proxy_pass, root, server
  2. Recargue NGINX o NGINX Plus:
$ sudo nginx -s reload
  1. Acceda a la siguiente URL en su navegador y observe qué ha cambiado con respecto a cuando accedió a ella en «Servir páginas e imágenes»: https://NGINX-server/application1/index.html

¡Y eso es todo! Ahora tienes una instancia de Ubuntu operativa con NGINX, lista para funcionar como servidor proxy.

Para obtener instrucciones sobre cómo implementar NGINX y NGINX Plus en AWS para otros casos de uso, consulte nuestras guías de implementación.

Conclusión

En este tutorial, ha aprendido a configurar NGINX o NGINX Plus para servir archivos e imágenes a través de Internet y actuar como proxy inverso. Si desea profundizar en NGINX, ofrecemos el curso de formación NGINX Core (impartido por un instructor o bajo demanda). Este curso abarca los temas de este tutorial, además de otros aspectos esenciales del servicio web y la entrega de aplicaciones, como el equilibrio de carga, el enrutamiento basado en la ubicación y la seguridad. Consulte también la documentación en nginx.org y la Guía de administración de NGINX Plus; salvo que se indique lo contrario, los artículos se aplican tanto a NGINX Open Source como a NGINX Plus.


Compartir
Etiquetas: F5 NGINX, 2021, Tech

Artículos relacionados del blog

Únete a F5 NGINX en AppWorld 2024
NGINX | 04/01/2024

Únete a F5 NGINX en AppWorld 2024

Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
NGINX | 26/09/2023

Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source

La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.

Exposición de APIs en Kubernetes
NGINX | 10/03/2022

Exposición de APIs en Kubernetes

La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
NGINX | 23/08/2021

NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto

Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.

Presentamos NGINX Plus R22
NGINX | 09/06/2020

Presentamos NGINX Plus R22

NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.

Presentamos NGINX Plus R17
NGINX | 11/12/2018

Presentamos NGINX Plus R17

NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.