Apuntes de Kirby
  • 👀whoami
  • 🦉Redes
    • Introducción Redes
      • Organizaciones
      • Historia
      • Puntos de conexión
      • Métodos de acceso a la red
    • Clasificación de las redes
    • Topología de las red
    • Direccionamiento IP
      • IPv4
        • Subredes IPv4
        • Superredes IPv4
        • VLSM
      • IPv6
      • MAC
      • NAT
    • Enrutamiento estático
    • Enrutamiento dinámico
      • RIPv1 & RIPv2
      • Tablas de enrutamiento
      • 🚧Redes conmutadas
    • CML
      • 🚧1er CML lab
    • CISCO
      • ¿Qué son las VLAN?
        • Ejemplo 1 de VLAN
        • Ejemplo 2 de VLAN
      • Acceso y password
      • NAT / PAT
    • Firewalls
      • Tipos de firewalls
      • ZPF
        • Funcionamiento
        • Configurando un ZPF
      • Sophos Firewall XG
        • Sophos home
        • Aprendiendo a usar Sophos
      • pfSense
        • Instalando pfSense
        • OpenVPN en pfSense
        • Port Forward
        • Alias
    • Proxy
      • Squid en pfSense
        • Squid Proxy Server
        • SquidGuard Proxy
      • Proxy reverse Nginx
    • 🚧Suricata
  • 🐝Servicios
    • Servidores Web
      • Nginx
        • NGINX, hosts virtuales
        • Hosts virtuales basados en dominio
        • PHP-FPM
        • Nginx: PHP y MySQL
          • MySQLi - PHP
        • En Alpine linux
        • 🚧Proxy
    • Servidores de correo
      • Seguridad en el correo
      • Postfix
      • hMailServer
      • Clientes de correo
        • Mailutils
        • Mutt
    • Servidores de FTP
      • FileZilla
      • VSFTPD
      • FTP vía IIS
    • Servidores DNS
      • DNS - Windows Server 2016
      • DNS - Ubuntu Server 22.04
      • Systemd
    • Servidores DHCP
      • DHCP-Windows Server 2016
      • DHCP-Ubuntu Server 22.04
    • Servidores MySQL
    • 🚧Mensajería instantánea
      • Ejabberd
    • 🚧Imágenes - Vídeos
      • FFMPEG + YT-DLP
      • Plex
      • Jellyfin
      • Plesk
      • RTMP
      • SRT
    • Webmin + Virtualmin
  • NextCloud
  • 🔑Seguridad
    • NAS
      • Instalación Synology NAS en VirtualBox
        • Creación de volúmenes y su uso
        • Actualización Synology NAS
        • Creación de usuarios y carpetas compartidas
        • Funciones del panel de control
          • Acceso por SSH
          • Configuración de los servicios de archivos
          • Configuración de red
          • Copias de seguridad (restauración)
          • Seguridad
          • Personalizar páginas de inicio
          • Servicio de notificaciones
        • Centro de paquetes Synology
          • Servidores multimedia
          • Paquetes de utilidades
          • Cloud Sync
          • Hyper Backup
          • Synology Office
      • Truenas
        • Rsync en Truenas
      • OpenmediaVault
    • Backups
      • Rsync
        • Ejemplo de rsync
    • ¿Qué son las ACL?
    • SOPS/AGE
    • RAID
      • mdadm
  • 🐳Virtualización
    • Proxmox
      • Instalar en VMWare
      • Instalar en VirtualBox
      • Entorno Proxmox
      • Almacenamiento local
      • Añadir discos
      • Clonar
      • Qemu agent
      • Linux container - LXC
      • Clúster
      • Red Interna
      • 🚧Proxmox Backup
      • 🚧Otras consideraciones
    • Alpine Linux
    • Contenedores
      • Docker
        • YAML
        • Instalando Docker
        • Portainer
          • Instalando Portainer
          • Dentro de Portainer
        • Docker volumen
        • Docker compose
          • Docker: PHP y MySQL
          • Importar sitio web en Docker
          • Instalando Wordpress
      • Pi-hole
        • Instalando Pi-hole en Docker
        • Instalando Pi-hole en Debian
        • RDP
          • RDP - Docker
  • 🐞Misceláneas
    • Datos - codificación
    • IPTables
    • Túnel con Cloudflare
    • Servidor de video
    • Comandos de Linux
    • Anaconda & Spyder
    • CGI - NGINX
    • Arduino
      • Capítulo 0 Blink
      • Capítulo 1 Led
      • Capítulo 2 Botton & LED
  • ⁉️Interesante
    • Curioso
    • Ideas
Powered by GitBook
On this page
  • Dominios – directorios de los sitios web
  • Creamos una página de prueba en cada sitio
  • Crear bloques en el servidor Nginx
  • SSL en Nginx - OPENSSL
  • Directivas en el archivo de configuración de kirby.com
  • LINKS

Was this helpful?

Edit on GitHub
  1. Servicios
  2. Servidores Web
  3. Nginx

Hosts virtuales basados en dominio

SSL

El contexto del servidor permite que varios dominios o sitios web se puedan almacenar y sirvan desde la misma máquina física o servidor privado virtual (VPS). En Nginx al igual que en Apache, se pueden declarar varios bloques de servidor (que representan hosts virtuales) dentro del contexto http para cada sitio/dominio. Nginx decide qué servidor procesa una solicitud en función del encabezado de solicitud que recibe.

Vamos a probar esta idea para lo cual utilizaremos dominios ficticios.

Dominios – directorios de los sitios web

Creamos los dominios/directorios que contendrán los sitios web, cada uno ubicado en su directorio específico:

  • kirby.com - /var/www/kirby.com/

  • punky.com - /var/www /punky.com/

A continuación, le asignamos los permisos correspondientes en el directorio de cada sitio.

$ sudo chmod -R 755 /var/www/ kirby.com
$ sudo chown -R www-data:www-data /var/www/ kirby.com
$ sudo chmod -R 755 /var/www/ punky.com
$ sudo chown -R www-data:www-data /var/www/ punky.com

Creamos una página de prueba en cada sitio

Creamos el archivo index.html en cada sitio web, con fines de prueba. Este archivo ofrecerá contenido que se mostrará en el navegador web cuando se llame al dominio en el navegador. Por ejemplo:

$ sudo nano /var/www/kirby.com/index.html

Puedes pegar el siguiente contenido HTML.

<html>
    <head>
        <title>Welcome to Kirby!</title>
    </head>
    <body>
  <h1>¡Welcome to Kirby en Kirby - Ubuntu Desktop!</h1>
    </body>
</html>

Copia el archivo index.html y pega en el otro directorio, en mi caso, en /var/www/punky.com. Haz alguna modificación en el documento HTML para probar uno y otro sitio web.

Crear bloques en el servidor Nginx

Tenemos que crear los bloques del servidor Nginx en el directorio /etc/nginx/sites-available. Recuerda que el bloque es /etc/nginx/sites-available/default que sirve el archivo HTML predeterminado en /var/www/html/index.nginx-debian.html. Justamente la web que nos muestra cuando instalamos el Nginx y escribimos localhost en el navegador.

En nuestro caso, vamos a tener que crear un bloque que sirva el contenido de los sitios previamente creados. Para ello, podemos copiar y pegar el archivo por defecto /etc/nginx/sites-available/default como:

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/kirby.com.conf
sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/punky.com.conf

El contenido de ambos ficheros sería:

server {
        listen 80;
        listen [::]:80;
        root /var/www/kirby.com;
        index index.html;
        server_name kirby.com www.kirby.com;

        location / {
                try_files $uri $uri/ =404;
        }

        location /images/{
                root /img;
        }
        
        access_log /var/log/nginx/kirby.com.access.log;
        error_log /var/log/nginx/kirby.com.error.log;
}

Habilitando los bloques en ../sites-enable/

Para habilitar el bloque del servidor Nginx, éste debe ser vinculado simbólicamente al directorio /etc/nginx/sites-enabled/. Para ello, creamos un enlace simbólico dentro de la carpeta sites-enable:

$ sudo ln -s /etc/nginx/sites-available/kirby.com /etc/nginx/sites-enabled/
$ sudo ln -s /etc/nginx/sites-available/punky.com /etc/nginx/sites-enabled/

Verificamos que la configuración de nginx está correcta haciendo:

$ sudo nginx –t                  

Para reiniciar el nginx podemos hacer:

$ sudo nginx –s reload
$ sudo systemctl restart nginx

Testeando

Debe obtener el contenido incluido en el archivo HTML en su bloque de servidor como se muestra.

SSL en Nginx - OPENSSL

Los certificados SSL ayudan a habilitar http seguro (HTTPS) en su sitio, que es esencial para establecer una conexión confiable/segura entre los usuarios finales y su servidor al cifrar la información que se transmite hacia o desde el sitio web.

Vamos a ver cómo crear e instalar un certificado autofirmado y generar una solicitud de firma de certificado (CSR) para adquirir un certificado SSL de una autoridad de certificación (CA), y poder utilizarlo con Nginx.

Los certificados auto firmados se pueden crear de forma gratuita y prácticamente están listos para realizar pruebas y para servicios internos de redes LAN. Cuando se trata de servidores públicos, se recomienda utilizar un certificado emitido por una CA (Let's Encrypt) para mantener su autenticidad.

Para crear un certificado auto firmado, lo primero que debemos hacer es crear un directorio que nos permita almacenarlos.

$ sudo mkdir /etc/nginx/ssl-certs/

Posteriormente, generamos el certificado autofirmado y la clave usando la herramienta de línea de comando openssl.

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl-certs/kirby.com.key -out /etc/nginx/ssl-certs/kirby.com.crt

Donde:

  • req -X509: muestra que estamos creando un certificado x509.

  • nodes (NO DES): significa "no cifrar la clave".

  • days 365: especifica la cantidad de días durante los que será válido el certificado.

  • newkey rsa: 2048: especifica que la clave generada mediante el algoritmo RSA debe ser de 2048 bits.

  • keyout /etc/nginx/ssl-certs/kirby.com.key: especifica la ruta completa de la clave RSA.

  • out /etc/nginx/ssl-certs/kirby.com.crt: especifica la ruta completa del certificado.

Directivas en el archivo de configuración de kirby.com

Dentro del archivo de configuración: /etc/nginx/sites-available/kirby.com.conf agregaremos las siguientes directivas:

listen 443 ssl;
ssl_certificate /etc/nginx/ssl-certs/kirby.com.crt;
ssl_trusted_certificate /etc/nginx/ssl-certs/kirby.com.crt;
ssl_certificate_key /etc/nginx/ssl-certs/kirby.com.key;

Las directivas ssl_protocols y ssl_ciphers se pueden usar para limitar las conexiones para incluir solo las versiones seguras y cifrados de SSL/TLS.

De forma predeterminada, Nginx usa ssl_protocols TLSv1 TLSv1.1 TLSv1.2 y ssl_ciphers HIGH:!aNULL:!MD5, por lo que generalmente no es necesario configurarlos explícitamente.

Para probar que funciona correctamente el certificado creado con openssl, basta ir al navegador y llamar a nuestros sitios web: https://www.kirby.com y https://www.punky.com. Como se muestra en las imágenes a continuación.

To be continued ...

LINKS

PreviousNGINX, hosts virtualesNextPHP-FPM

Last updated 1 year ago

Was this helpful?

Para confirmar si el bloque del servidor está funcionando como se esperaba y está sirviendo contenido en el directorio /var/www/kirby.com y en /var/www/punky.com, abre el navegador y busca el nombre de dominio:

🐝
http://www.kirby.com
https://techexpert.tips/es/nginx-es/nginx-virtualhost-varios-sitios-web-en-el-mismo-servidor/
Beginner’s Guide (nginx.org)
https://nginx.org/en/docs/http/configuring_https_servers.html
https://www.digicert.com/kb/ssl-support/openssl-quick-reference-guide.htm
www.kirby.com
www.punky.com
COnfiguración del archivo de configuración de kirby.com
https://www.kirby.com
https://www.punky.com