ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
Servidores multi-IP y SEO

Cómo asignar una IP dedicada a cada sitio web: Nginx y aaPanel

8 pasos 12 min de lectura 6 vistas 0
Contenido

En un servidor multi-IP (hosting SEO con múltiples IP), un requisito habitual es que cada sitio web resuelva y escuche en su propia IP, para facilitar la administración, la gestión de certificados y el aislamiento de riesgos. Esta guía explica cómo asignar una IP dedicada a cada sitio web en un servidor multi-IP: vincular direcciones con listen IP:80/443 en Nginx, configurar IP por sitio en aaPanel (BaoTa), entender la IP de salida y SNAT, y seguir consejos SEO prácticos para redes de sitios. Se aplica a Nginx en Debian/Ubuntu y CentOS/Rocky/AlmaLinux.

Primero asigne el bloque de IP a la tarjeta de red del servidor (consulte nuestro artículo sobre cómo asignar un /24 completo en Linux) y apunte el registro A de cada dominio a su propia IP. Los ejemplos usan 203.0.113.11, 203.0.113.12 y los dominios site1.example y site2.example.

Paso 1: Confirme que las IP estén asignadas a la interfaz

Nginx solo puede escuchar en direcciones que existen en el sistema; de lo contrario, muestra el error cannot assign requested address:

ip -4 addr show dev eth0 | grep inet

Paso 2: Vincular cada sitio web a su propia IP con listen IP:80 en Nginx

En el bloque server de cada sitio, cambie listen 80; por listen IP:80;. Los archivos de configuración suelen estar en /etc/nginx/conf.d/ o /etc/nginx/sites-available/:

server {
    listen 203.0.113.11:80;
    server_name site1.example www.site1.example;
    root /var/www/site1;
    index index.html index.php;
}

server {
    listen 203.0.113.12:80;
    server_name site2.example www.site2.example;
    root /var/www/site2;
    index index.html index.php;
}

Así, las solicitudes a una IP determinada solo coincidirán con los sitios vinculados a esa IP, aunque la cabecera Host no coincida.

Paso 3: Use listen IP:443 ssl para los sitios HTTPS

Haga lo mismo con el puerto 443 y asigne a cada sitio su propio certificado:

server {
    listen 203.0.113.11:443 ssl;
    server_name site1.example www.site1.example;
    ssl_certificate     /etc/nginx/ssl/site1.example/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/site1.example/privkey.pem;
    root /var/www/site1;
}

Con un sitio HTTPS por IP, incluso los clientes sin soporte para SNI reciben el certificado correcto.

Paso 4: Agregue un servidor predeterminado por IP para bloquear dominios desconocidos

Añada un default_server para cada IP que rechace nombres de host desconocidos, de modo que nadie pueda apuntar su dominio a su IP y crear un espejo de su contenido:

server {
    listen 203.0.113.11:80 default_server;
    server_name _;
    return 444;
}

Paso 5: Pruebe y recargue Nginx y verifique la IP de cada sitio

nginx -t && systemctl reload nginx
ss -lntp | grep nginx

Antes de que se propague el DNS, use curl --resolve para probar cada sitio contra su IP:

curl -I --resolve site1.example:80:203.0.113.11 http://site1.example/
curl -I --resolve site2.example:80:203.0.113.12 http://site2.example/

Paso 6: Sitios con varias IP en aaPanel (BaoTa)

Los sitios nuevos en aaPanel (BaoTa) escuchan en el puerto 80 de todas las IP de forma predeterminada. Para vincular un sitio a una IP dedicada, abra la configuración del sitio en el panel, vaya al archivo de configuración y cambie las líneas listen a una IP específica:

listen 203.0.113.11:80;
listen 203.0.113.11:443 ssl;
Cambiar los ajustes de SSL, rewrite o puertos en el panel puede regenerar las líneas listen. Vuelva a revisar el archivo de configuración después. Los nombres de los menús dependen de la versión de su panel.

Paso 7: IP de salida y SNAT en resumen

La directiva listen de Nginx solo controla la IP de entrada. Cuando el servidor realiza solicitudes salientes (scraping, llamadas a API, correo), usa la IP principal de forma predeterminada. Para que el tráfico de un sitio salga por una IP específica, vincule la dirección de origen en su código (curl --interface, CURLOPT_INTERFACE de cURL en PHP), o ejecute el sitio con un usuario dedicado y aplique SNAT por usuario con iptables:

useradd -r -s /sbin/nologin site1run
iptables -t nat -A POSTROUTING -o eth0 -m owner --uid-owner site1run -j SNAT --to-source 203.0.113.11
curl --interface 203.0.113.11 https://ifconfig.me

Guarde las reglas de iptables con iptables-save o netfilter-persistent para que se mantengan tras reiniciar.

Consejos SEO para servidores multi-IP y redes de sitios

  • Una IP dedicada es solo la base; el contenido original, la calidad del sitio y la experiencia del usuario importan mucho más para el posicionamiento;
  • Evite usar plantillas, contenido e ID de analítica idénticos en distintos sitios;
  • Configure el rDNS de las IP si lo necesita y asigne a cada sitio su propio certificado;
  • Siga las directrices para webmasters de los buscadores; no use redes de sitios para spam de enlaces ni espejos de contenido copiado.

Preguntas frecuentes

Nginx muestra bind() to 203.0.113.11:80 failed. ¿Por qué?

Normalmente la IP no está asignada a la tarjeta de red, u otro proceso está usando el puerto. Compruébelo con ip addr y ss -lntp.

Al visitar la IP sigue apareciendo otro sitio. ¿Qué reviso?

Busque un bloque server que todavía use listen 80 default_server, o un DNS que aún apunte a la IP anterior.

¿Puedo hacer lo mismo con Apache?

Sí. Use <VirtualHost 203.0.113.11:80> junto con la directiva Listen.

¿Sigue con problemas? Abra un ticket con el soporte técnico 24/7 de IMIDC.

¿Fue útil la respuesta?

Tutoriales relacionados