🐋
Apuntes Sistemas
  • ⚓Presentación
  • 📊Sistemas y Servidores
    • Personalizar el prompt de Windows
    • Utilidad de manejo de apps para Windows
    • PRACTICA: Arranque dual Windows y Ubuntu
    • 🚧SysLinuxOS: el SO para ASIX
    • Comandos Linux
      • PRACTICA - Ejercicio de práctica comandos
      • 🚧Instalación de paquetes
      • Apuntes Linux: blue/red team
      • Ejemplos de bash
      • Listado de comandos de Linux
    • Comandos Windows
      • 🚧Apuntes Powershell
      • Bucles FOR con batch
      • Scripts de práctica de Windows
    • Prácticas con Windows 10
    • Configuración de netplan
    • Terminal shell
      • SSH
      • 🚧Ghostty
      • 🚧Warp: la terminal inteligente
      • tmux: paneles de terminal
      • Tabby: Mejorar terminal
      • Conexión SSH en red NAT con VirtualBox
      • TheFuck!: Corrección de comandos
      • Wave: Mejorar terminal Linux
      • 🚧Registros de sesiones
    • Instalación manual de Wordpress en CDMON
    • 🏗️Proxmox
    • 🚧TrueNAS
    • Docker
      • Instalación de Docker
      • Dockerfiles
      • Volúmenes de docker
      • Deployment web con Docker con ejemplos
        • 🚧PRACTICA: Node.js con docker
      • Docker Compose
        • Ejemplo 1: Implantación de Wordpress
        • Ejemplo 2: Implementación de servidor con Nginx, Flask y mySQL
        • Ejemplo 3: Implantación de onlyoffice
        • 🚧Ejemplo 4: Passbolt
        • 🚧PRACTICA: Creando una web de emulación de juegos con docker-compose
      • Monitorización con Grafana en Docker
      • Pi-hole con docker
      • Actividad clase: Deployment app
      • Proyectos self-hosted de docker
    • 🚧Ansible
      • Configuración de laboratorio de ansible
    • 🚧Monitorización de servicios y redes
      • Servicios y cronjobs
      • 1Panel
      • 🚧WatchYourLAN
      • 🚧Uptime-kuma
      • 🚧Netdata
      • 🚧Prometheus + Grafana + Loki
    • LDAP
      • 🚧Gestión gráfica de LDAP
      • Carpetas compartidas NFS
      • PRACTICA: Infraestructura LDAP
  • 🗃️Servicios
    • 🚧Servidor hosting público
    • DHCP
      • DHCP con Ubuntu
      • 🦖DHCP & DNS script
      • DHCP con Alpine
        • Alpine - configuración de red
    • DNS
      • 😡Comprobación DNS
      • Script para enumeración DNS
      • DNS con ubuntu server
      • 🏗️DNSmasq
      • 🚧Securizar servidor DNS
    • Web
      • IIS con Windows server
      • Apache
        • Instalación de LAMP en Ubuntu
          • Prueba de servidor LAMP
          • 🚧Configuración de seguridad de Ubuntu
          • Creación de un VirtualHost en LAMP
          • Creación de varios VirtualHosts en LAMP
          • 🚧Instalación por script de LAMP
        • Aplicaciones con LAMP
          • Instalación de WP en entorno LAMP
          • 🚧Instalación de MantisBT en LAMP
            • 👷Guía de MantisBT
          • 🚧Instalación de QDPM con LAMP
      • Nginx
        • Virtualhosts
        • Instalando Wordpress en nginx
      • 👷MEAN stack
      • 👷‍♂️Caddy
      • 🚧Plesk
      • 🚧Ajenti -Web interface
    • 🏗️Proxy
      • Nginx como proxy inverso y balanceador
      • 🚧Zoraxy
    • Mailing
      • 🚧Servidor Mail con cloudfare
      • 🚧Reenvío de correos de root
      • 🚧Roundcube como MUA
      • Comprobación ESMTP
      • 🚧Seguridad en mailing
      • 🚧Mailhog
    • 🏗️File transfer
      • 🚧FTP
      • Git
    • Sistemas de comunicación instantánea
      • Comunicación mediante CLI
      • Ejabberd - XMPP
        • 🚧Ejabberd con docker
      • 🚧Openfire - XMPP
      • 🚧Comunicaciones servidor-móvil
    • 🏗️Multimedia services
      • Stremio
      • Ver anime por CLI
      • Jellyfin
      • 🚧HLS sobre Apache
      • 🚧Servicio autohospedado de videoconferencia
      • 🚧Morphos: Conversor docs
      • 🚧Reproductores de música en CLI
      • 🚧Icecast - música en streaming
      • 🚧RTMP-HLS server
      • 🚧Guacamole
  • 🖱️Hardware
    • 🚧Identificando conectores
    • Curso de electrónica analógica
    • Alcanzar los 3200MHz con la RAM
    • Calculadora de cuellos de botella
    • 🚧PXE: Bootear sistemas en red
    • 🚧PRÁCTICA - Clonación de disco con Clonezilla
    • Logitech iFixit
  • 🕸️Redes
    • Apuntes IPv4 Alina
    • ¿Cómo diferenciar tantos elementos de red?
    • 🚧IPv6
    • PRÁCTICA - Subneteo con IPcalc en Linux
    • PRÁCTICA - Comandos de red en Windows
    • 🚧PRÁCTICA - Comandos de red en Linux
    • Herramientas de red
      • 🚧TCPDump: analizado de paquetes en red
      • PRÁCTICA - Netsh
      • 🚧PRÁCTICA - mtr.ping.pe
      • 🚧Netcat
    • Wireshark
    • VPN y escritorio remoto
      • Comunicación punto a punto con ngrok
      • 🚧VPN
    • Escaneo de red
      • PRÁCTICA - Mapeado de red con Draw.io
      • 🚧PRÁCTICA - Nmap/Zenmap
    • Redes inalámbricas
      • Wi-fi
        • 🚧PRÁCTICA - Configuración de router
        • 🚧PRÁCTICA - Como hacer un Wifi Heatmap
        • 🚧Seguridad de redes inalámbricas
        • PRÁCTICA - Crackear la contraseña del Wifi con WPA/WPA2
    • PRÁCTICA - Usar SSH en Cisco packet tracer
  • 🛑Ciberseguridad
    • 🚧Securizando un servidor Linux
      • Protégete de ataques de fuerza bruta con Fail2ban
      • Firewall
        • UFW (uncomplicated firewall)
          • GUFW - Interfaz gráfica de ufw
        • 🚧IPTables
        • 🚧PFsense
          • 🚧DMZ con PFsense
      • 🚧Passbolt: gestor de contraseñas autohospedado
      • 🚧Hashes y encriptación
      • 🚧Certificados SSL/TLS
      • Copias de seguridad
    • 🚧Alerta de escaneo de puertos
    • 🚧Google dorks
    • 🚧Enumeración DNS
    • Comandos destructivos de linux
    • Webs enseñanza cyber
    • Wireless Pentesting CheatSheet Github
    • The password game!
    • Personal Security Checklist
  • 🔌Arduino
    • Termómetro e higrómetros digitales y online con Arduino
    • Construyendo un coche multipropósito
      • Multi
      • Montaje del auto
    • Arduino con Sigfox para IoT
    • 10 proyectos de Arduino
  • 📚Recursos y libros
    • Media library: libros varios
    • Herramientas básicas de sysadmin
  • 🌍Sostenibilidad y digitalización
    • Portfolio curso digitalización MOOC
    • 🚧Explotación de recursos por IA
    • 🚧Nuevas tecnologias y comunicaciones
    • 🚧Enlaces sobre Inteligencia artificial
Con tecnología de GitBook
En esta página
  1. Servicios
  2. Web
  3. Nginx

Virtualhosts

AnteriorNginxSiguienteInstalando Wordpress en nginx

Última actualización hace 7 meses

Un VirtualHost (o servidor virtual) es un concepto utilizado en servidores web para permitir la configuración de varios sitios web en una única instancia del servidor.

La necesidad de VirtualHosts surge porque un servidor web puede tener múltiples sitios web alojados en la misma dirección IP, y es necesario diferenciar entre ellos para dirigir correctamente las solicitudes entrantes. Como ya sabrás, hay dos tipos de Vhost:

  • Basados en dominios

  • Basados en IPs.

Recuerda que en el contexto de http, cada bloque server, como hemos visto, implica un VirtualHost.

Vamos a configurar un virtualhost de cero en nginx:

Paso 1: Crear el directorio del sitio web

Primero, deberás crear un directorio para almacenar los archivos de tu sitio web:

sudo mkdir -p /var/www/alex.com/html
sudo chmod -R 755 /var/www/alex.com

Paso 2: Asignar propiedad del directorio

Asegúrate de que el directorio pertenece al usuario correcto:

sudo chown -R $USER:$USER /var/www/alex.com/html

Paso 3: Crear un archivo de configuración de Nginx

Crea un nuevo archivo de configuración para tu virtual host:

sudo nano /etc/nginx/sites-available/alex.com

Incluye la siguiente configuración básica:

server {
    #Puerto de escucha, por ahora HTTP
    #Otro ejemplo -> listen 127.0.0.1:8080;
    listen 80;
    #Nombre del servidor + www
    server_name alex.com www.alex.com;
    
    #Localización de los archivos web antes creados y del nombre concreto de la pagina de inicio
    location / {
        root /var/www/alex.com/html;
        index index.html index.htm;
    }
    
    
    #Configuración de páginas de error (opcional)
    error_page 404 /404.html;
    location = /404.html {
        root /var/www/alex.com/html;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /var/www/alex.com/html;
    }
}

Recuerda que la diferencia entre el "-available" y el "-enabled" es que en un lado tienen que ir los que quieras guardar y en el otro los que deben estar activos, respectivamente, siendo este ultimo el que recoge los enlaces simbólicos.

Para ser mas ordenado resulta útil crear archivos de configuración dentro de una carpeta sites-enabled dentro de nginx y, con la directiva include añadir el archivo de configuración correspondiente al Vhost que quieras.

Para ello:

  1. Configura la directiva include en nginx.conf: En el archivo principal de configuración de Nginx (nginx.conf), configura la directiva include para cargar todas las configuraciones de VirtualHost desde el directorio sites-enabled. Esto se hace dentro del bloque http en el archivo nginx.conf.

/etc/nginx/nginx.conf
http {
    # Otras configuraciones de HTTP aquí...

    include /etc/nginx/sites-enabled/*;
}
/etc/nginx/sites-enabled/alex.conf
}
#Configuración de páginas de error (opcional)
    error_page 404 /404.html;
    location = /404.html {
        root /var/www/alex.com/html;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /var/www/alex.com/html;
    }
}
  1. Una vez creado el archivo, lo referenciamos en el virtualhost

/etc/nginx/sites-available/alex.com
server {
    listen 80;
    server_name www.alex.com;

    location / {
        root /etc/nginx/sites-enabled/alex.conf;
        # Otras configuraciones...
    }
}

Paso 4: Habilitar el archivo de configuración

Habilita tu virtual host creando un enlace simbólico:

sudo ln -s /etc/nginx/sites-available/alex.com /etc/nginx/sites-enabled/

Si quisiéramos ahora "desactivar" un sitio, simplemente eliminaríamos el enlace simbólico en sites-enabled:

sudo rm /etc/nginx/sites-enabled/alex.com

Reiniciamos el servicio y listo.

Paso 5: Probar la configuración de Nginx

Antes de reiniciar Nginx, prueba tu configuración para asegurarte de que no haya errores de sintaxis:

sudo nginx -t

Paso 6: Reiniciar Nginx

Finalmente, reinicia Nginx para aplicar los cambios:

sudo systemctl restart nginx

Paso 7: Editar el archivo hosts local (opcional)

Si aún no has configurado DNS, puedes editar el archivo hosts de tu equipo local para probar el virtual host:

# Añadir esta línea a /etc/hosts en sistemas Unix o
# C:\Windows\System32\Drivers\etc\hosts en Windows
127.0.0.1 tudominio.com

Con estos pasos, tendrás tu VirtualHost para tudominio.com corriendo en Nginx.

🗃️
Page cover image
Nginx serverhosts