Simple Gestión de Hosts Virtuales con NGINX Proxy Manager

Gestionar Proxies y Virtual Hosts (VHosts) a través de archivos de configuración de NGINX puede volverse tedioso a medida que aumenta el número de hosts virtuales y servicios web. ¿Cómo puedes simplificar el proceso? Con NGINX Proxy Manager (NPM).

Sigue leyendo y aprende a crear, gestionar y asegurar hosts virtuales con la consola web de NGINX Proxy Manager.

Prerrequisitos

Este tutorial será una demostración práctica. Si deseas seguirlo, asegúrate de tener lo siguiente:

Configuración del NGINX Proxy Manager

El NGINX Proxy Manager no es un paquete que instalas en tu sistema operativo. En su lugar, NPM es una aplicación que despliegas en Docker, por eso Docker y Docker Compose son los requisitos principales.

Sigue los siguientes pasos para comenzar a configurar tu NGINX Proxy Manager.

1. Inicie sesión en su servidor Linux a través de SSH o el entorno de escritorio si está presente.

2. Cree y abra un archivo YAML llamado docker-compose.yml utilizando su editor de texto preferido, aquí se utiliza vi.

vi docker-compose.yml

3. Copie y pegue el siguiente código en el editor. Este código contiene las directivas para descargar y configurar la última imagen de nginx-proxy-manager. Guarde y cierre el archivo para volver a la línea de comandos.

version: '3'
services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped #Asegúrese de que el administrador de proxy sobreviva a los fallos
    ports:
      #Permita que los puertos respectivos del contenedor sean accesibles desde la máquina host
      - '80:80'
      - '81:81' #Puerto para el Panel de Administración
      - '443:443'
    volumes:
      #Asocie los siguientes directorios del contenedor con los directorios correspondientes en la máquina host
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

4. Ejecute docker-compose para iniciar el contenedor en segundo plano (-d) según las directivas especificadas.

docker-compose up -d
Running Docker Compose to set up NGINX Proxy Manager container

5. Ejecute el siguiente comando para asegurarse de que el contenedor está en funcionamiento.

docker ps

Si todo está bien, debería ver un proceso en ejecución correspondiente al contenedor del administrador de proxy como se muestra en la captura de pantalla a continuación.

Listing running Docker containers

Acceso al Panel Administrativo

El NGINX Proxy Manager ahora debería estar en funcionamiento. Ahora puede acceder al panel de administración de NPM para realizar la configuración inicial del usuario administrador.

1. Abra la ventana de su navegador y vaya a http://<host_ip>:admin-ui-port>. Para mayor comodidad, este tutorial utiliza localhost implícito en lugar de una dirección IP, es decir, http://localhost:81, para iniciar el panel de administración.

2. Inicie sesión con las credenciales predeterminadas iniciales de la dirección de correo electrónico [email protected] y la contraseña changeme.

Logging in for the first time

3. Modifique la cuenta de usuario predeterminada según desee. Este tutorial conserva el Nombre Completo y el Apodo y solo cambia el Correo Electrónico a [email protected]. Haga clic en Guardar para guardar los detalles del usuario.

Changing admin user default credentials

4. Escriba una nueva contraseña para el usuario en Cambiar Contraseña como se muestra a continuación. Escriba una contraseña de ocho caracteres o más y haga clic en Guardar.

Changing the default password

Debería ver los cambios que realizó en la cuenta de usuario a continuación.

Viewing the user list in NGINX Proxy Manager

Implementación del Servidor Web

Ahora que ha realizado la configuración inicial, su próximo paso es iniciar un servidor web para su host virtual. Siga los pasos de esta sección para iniciar rápidamente un contenedor de servicio web Apache utilizando Docker Compose.

Abra el archivo docker-compose.yml que creó previamente en su editor de texto. Adjunte el siguiente fragmento de código al archivo docker-compose.yml

La ventaja de utilizar el mismo archivo es que modifica la red de contenedor existente agregando un contenedor basado en httpd registrado bajo el nombre app2 en lugar de en una red separada.

app2:
    #Nombre personalizado para referencia interna al contenedor. Usado para la comunicación entre contenedores
    image: 'httpd:latest'
    restart: unless-stopped

El contenido del archivo debería verse como en la captura de pantalla a continuación. Guarde el archivo y salga del editor.

Adding a web server deployment directive

Ejecute docker-compose para levantar el contenedor en segundo plano (-d).

docker-compose up -d

Debería recibir una retroalimentación similar a la captura de pantalla a continuación, confirmando la creación del segundo contenedor.

Creating and starting the Web server with Docker Compose

Creando un Nuevo Host Virtual

Ahora tiene un servicio web en funcionamiento. Esta sección tiene como objetivo permitir el acceso al servidor web a través de los puertos publicados del Administrador de Proxy NGINX.

1. Inicie sesión en el panel de administración del Administrador de Proxy NGINX.

2. Haga clic en Hosts —> Hosts Proxy.

Creating a VHOST: Opening the Proxy Host card

3. Haga clic en Agregar Host Proxy para iniciar la creación de un host virtual para el servidor web

Creating a VHOST: Adding a Proxy Host

4. Complete el formulario Nuevo Host Proxy con los siguientes detalles para configurar el host virtual.

  • Nombres de Dominio: Los nombres de dominio donde su servidor web será accesible. Este ejemplo utiliza el dominio testweb.com.
  • Nombre de host / IP Reenviado: El nombre de host o la dirección IP del servidor web. Dado que este tutorial utiliza Docker Compose para configurar los contenedores, es suficiente con usar app2. Escribe cualquier nombre que hayas proporcionado en docker-compose.yml.
  • Puerto Reenviado: El puerto en el que el servidor web escucha las solicitudes. En este caso, utilizarás el puerto 80, que es el puerto expuesto por defecto para los contenedores de Apache httpd.
  • Bloquear Exploits Comunes: Como ventaja, los proxies configurados con NPM pueden bloquear exploits comunes. Activa esta opción.
  • Lista de Acceso: Listas predefinidas para controlar el acceso al servidor web detrás de un proxy. Para este tutorial, deja la opción de Acceso Público para asegurarte de que puedes acceder al servidor web a través del proxy.

El formulario en tu pantalla debería coincidir con la captura de pantalla que aparece a continuación. Haz clic en Guardar después de completar el formulario.

Adding the Proxy Host details

Ahora tienes un host de proxy en la lista.

List of proxy hosts

5. Por último, navega hasta la URL del host virtual en una nueva pestaña o ventana del navegador. Para este tutorial, la URL es http://testweb.com. Si el host virtual está funcionando correctamente, deberías ver la página de inicio predeterminada.

Accessing the Webserver via the Proxy

Provisión de Certificados SSL

Has implementado el servidor web y confirmado que está en funcionamiento. Sin embargo, en este punto, el sitio web aún no tiene un certificado SSL. Aunque ejecutar sitios web privados internos puede estar bien sin un certificado SSL, no debería ser lo mismo cuando se alojan sitios web públicos.

Para asegurarse de que las conexiones de su sitio web estén encriptadas, instalará un certificado SSL en su host virtual a continuación. No se preocupe, lo hará desde el NGINX Proxy Manager. Pero ya debería tener un certificado SSL en formato PEM y una clave de certificado existente como requisito.

1. Haga clic en la pestaña “SSL Certificates” en el panel de administración del NGINX Proxy Manager.

Opening the SSL Certificates tab

2. En la esquina superior derecha, haga clic en “Add SSL Certificates” -> “Custom”.

Adding a custom SSL certificate

Como alternativa a un certificado personalizado, puede solicitar un certificado de Let’s Encrypt directamente y sobre la marcha seleccionando “Let’s Encrypt”. Pero hacerlo requiere que su sitio web y su registro DNS sean públicos. De lo contrario, la adquisición del certificado fallará.

3. Complete el formulario Add Custom Certificate de la siguiente manera:

  • Nombre: Un nombre fácil de entender para el certificado en el panel de administración. Este tutorial utiliza el nombre “Testweb Cert”.
Provisioning SSL Certificates: Naming the certificate
  • Clave del certificado: Esta clave viene con el archivo de certificado que generó como requisito en este tutorial.

Haga clic en “Browse” y navegue hasta el archivo de clave.

Provisioning SSL Certificates: Selecting the key file

Haga doble clic en el archivo de clave. Para este tutorial, la clave del certificado se llama “mytesthttpd.key”.

Provisioning SSL Certificates: Selecting the key file
  • Certificado: El archivo del certificado en sí, ya sea en formato .crt o .pem.

Haga clic en “Browse” y navegue hasta su certificado en el explorador de archivos.

Provisioning SSL Certificates: Selecting the certificate file

Haga doble clic en el archivo del certificado para abrirlo. Para este tutorial, el archivo de clave se llama “mytesthttpd.pem”.

Provisioning SSL Certificates: Selecting the certificate file

4. Una vez que hayas completado los tres campos, tu formulario debería verse como en la captura de pantalla a continuación. Haz clic en Guardar para enviar el certificado personalizado.

Este tutorial no utiliza un certificado Intermedio. Ignora ese campo por ahora.

Saving the SSL certificate

5. Ahora, haz clic en Hosts —> Proxy Hosts.

Provisioning SSL Certificates: Applying the certificate to a Proxy Host

6. Haz clic en el ícono del menú kebab y luego en Editar. Observa que en este punto la columna SSL dice Solo HTTP

Editing a proxy Host

7. Selecciona la pestaña SSL en la ventana de Edición de Proxy Host como se muestra a continuación. Selecciona el certificado que has provisto del menú desplegable bajo SSL Certificate. Para este tutorial, es Testweb Cert como en la captura de pantalla a continuación.

Selecting a certificate for a Proxy Host

8. Selecciona el certificado que agregaste anteriormente del menú desplegable bajo SSL Certificate. Como puedes ver a continuación, el nombre del certificado a seleccionar es Testweb Cert.

Selecting a certificate for a Proxy Host

9. Habilita todas las opciones avanzadas de SSL disponibles, como se muestra en la captura de pantalla a continuación, y haz clic en Guardar.

La opción Forzar SSL forzará o actualizará todas las conexiones a HTTPS incluso cuando el cliente intentó inicialmente acceder a la URL de HTTP solamente.

Enabling enhanced SSL features

A word of warning with HSTS. As browsers will include the site on an internal inclusion list, your site will no longer work under non-SSL conditions. Therefore, make sure that you have everything set up the correct way first.

Notarás que el valor de la columna SSL cambió de Solo HTTP a Personalizado.

Confirming changes in the SSL setting for a Proxy Host

10. Por último, abre una pestaña del navegador y navega de nuevo a tu dominio de host virtual. Para este tutorial, eso es http://testweb.com. La conexión debería actualizarse automáticamente a HTTPS.

Testing HTTPS access with a browser

¡Felicidades! Has completado la implementación de un host virtual seguro utilizando NGINX Proxy Manager.

Agregando Usuarios de NGINX Proxy Manager

Si trabajas con un equipo o esperas que otra persona gestione los hosts virtuales en NPM, deberás proporcionar acceso de usuario. En esta sección, ampliarás la gestión de NPM, especialmente en configuraciones de equipo, creando un usuario y asignando roles y permisos.

1. Haz clic en Usuarios en la página de inicio del panel de administración.

Extending NPM with Users: Opening the Users tab

2. Haz clic en Agregar Usuario en la esquina superior derecha de la tarjeta de Usuarios.

Adding a user

3. Escribe el Nombre completo del usuario (Test User), el Apodo (testuser) y el Correo electrónico ([email protected]) en los campos correspondientes y haz clic en Guardar.

Este usuario que estás creando no será un administrador completo, así que no habilites el rol de Administrador. En su lugar, asignarás permisos personalizados. Haz clic en Guardar para añadir el nuevo usuario.

Adding user particulars

4. Configura los permisos que deseas dar al usuario. Para este tutorial, el nuevo usuario tendrá la siguiente configuración de permisos.

  • Puede ver solo los elementos creados por el usuario.
  • Puede crear, editar y eliminar Hosts Proxy.
  • Puede crear, editar y eliminar Hosts de Redirección.
  • No puede ver Hosts 404.
  • No puede ver Flujos.
  • Puede ver Listas de Acceso.
  • Puede crear, editar y eliminar Certificados SSL.

El conjunto de permisos debería verse similar a la captura de pantalla a continuación. Haz clic en Guardar para finalizar la adición del nuevo usuario.

Saving the user’s permissions

5. Ahora, haz clic en el menú kebab del nuevo usuario y selecciona Iniciar sesión como usuario. Este paso cambiará el contexto del usuario actual a Test User.

Signing in as the new user

6. Explora el panel de administración desde el punto de vista del nuevo usuario. Según los permisos de este usuario, deberías ver menos pestañas y recursos.

Confirming access permissions

Conclusión

Felicitaciones por terminar este tutorial del Gestor de Proxy NGINX. ¡Aprendiste a gestionar hosts virtuales y habilitar la colaboración creando usuarios desde la interfaz gráfica de usuario! ¿Crees que volverás alguna vez a gestionar hosts virtuales de NGINX mediante la edición manual de archivos de configuración?

Aquí tienes una idea para poner a prueba tu aprendizaje aún más. ¿Por qué no investigar sobre Cómo Servir Subdominios o Múltiples Dominios de NGINX. Pero en lugar de seguir las configuraciones manuales, aplica lo que has aprendido e implementa y configura los hosts virtuales usando el Gestor de Proxy NGINX.

Source:
https://adamtheautomator.com/nginx-proxy-manager/