Nginx permite configurar múltiples servidores virtuales en una misma instancia, una característica esencial para gestionar varios sitios o aplicaciones web en un solo servidor. Esto es particularmente útil para proveedores de hosting y administradores de sistemas que necesitan alojar varios dominios o subdominios en una misma máquina, cada uno con su propia configuración y contenido.
Un servidor virtual en Nginx representa una configuración específica asociada a un dominio o subdominio en el servidor. Nginx permite crear múltiples bloques server dentro de su configuración, donde cada bloque define las configuraciones y características para un dominio particular. Estos servidores virtuales pueden compartir la misma dirección IP o tener direcciones IP dedicadas, y son identificados por el nombre del servidor (nombre de dominio) en lugar de la IP.
Cada servidor virtual se define dentro de un bloque server, en el archivo de configuración principal de Nginx o en archivos de configuración específicos que se incluyan en este archivo. Los servidores virtuales se identifican mediante la directiva server_name, que especifica el dominio o subdominio al que responden.
http {
# Configuración del servidor virtual para ejemplo1.com
server {
listen 80;
server_name ejemplo1.com www.ejemplo1.com;
location / {
root /var/www/ejemplo1;
index index.html;
}
}
# Configuración del servidor virtual para ejemplo2.com
server {
listen 80;
server_name ejemplo2.com www.ejemplo2.com;
location / {
root /var/www/ejemplo2;
index index.html;
}
}
}
En este ejemplo:
ejemplo1.com y ejemplo2.com, cada uno con su propio directorio raíz (/var/www/ejemplo1 y /var/www/ejemplo2).
listen 80 indica que ambos servidores escuchan en el puerto 80, el puerto predeterminado para HTTP.
| Parámetro | Tipo | Descripción |
|---|---|---|
listen
|
Puerto/IP | Puerto y/o dirección IP donde el servidor escuchará las solicitudes (por defecto, 80 para HTTP y 443 para HTTPS). |
server_name
|
Dominio | Nombre de dominio o subdominio que identifica al servidor virtual. |
root
|
Ruta | Ruta del directorio raíz donde se encuentra el contenido del sitio o aplicación. |
index
|
Archivo |
Archivo de índice predeterminado para las solicitudes (ejemplo: index.html, index.php).
|
location
|
Directiva | Define rutas específicas dentro del servidor para configuraciones adicionales (como proxy, redirección, etc.). |
1. Servidor virtual para HTTPS (SSL):
server {
listen 443 ssl;
server_name seguro.ejemplo.com;
ssl_certificate /etc/nginx/ssl/ejemplo.crt;
ssl_certificate_key /etc/nginx/ssl/ejemplo.key;
location / {
root /var/www/seguro;
index index.html;
}
}
2. Servidor virtual con redirección de www a no-www:
server {
listen 80;
server_name www.ejemplo.com;
return 301 http://ejemplo.com$request_uri;
}
server {
listen 80;
server_name ejemplo.com;
location / {
root /var/www/ejemplo;
index index.html;
}
}
3. Servidor virtual multi-dominio:
server {
listen 80;
server_name dominio1.com dominio2.com;
location / {
root /var/www/multi_dominio;
index index.html;
}
}
Para más detalles sobre la configuración de servidores virtuales en Nginx, consulta la documentación oficial de Nginx.
Jorge García
Fullstack developer