Start typing to search across invoices, services, domains, tickets, and more...
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.
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 inetEn 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.
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.
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;
}nginx -t && systemctl reload nginx
ss -lntp | grep nginxAntes 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/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;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.meGuarde las reglas de iptables con iptables-save o netfilter-persistent para que se mantengan tras reiniciar.
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.
Busque un bloque server que todavía use listen 80 default_server, o un DNS que aún apunte a la IP anterior.
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.