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