Cuando es la IA quien la lía

La idea es implementar el ping en www.dominio.com pero no en dominio.com, resolviendo ambos la misma IP
Para implementar un endpoint HTTP de "ping" que responda en el subdominio www.dominio.com pero no en dominio.com, aunque ambos resuelvan a la misma IP, puedes hacerlo distinguiendo las peticiones por el encabezado Host HTTP en tu servidor web o aplicación.
Cómo hacerlo:
1. En tu servidor web (Apache, Nginx, etc.)
Configura hosts virtuales distintos para dominio.com y www.dominio.com en Apache o bloques server en Nginx, apuntando ambos al mismo directorio o aplicación pero con configuración distinta:
- En el host virtual o bloque para
www.dominio.com, habilita la ruta/pingpara responder con status 200 (pong). - En el host virtual o bloque para
dominio.com, no implementes esa ruta o hazla devolver error 404 o similar.
Ejemplo simplificado en Nginx:
server {
server_name dominio.com;
location / {
# Aplicación normal sin /ping
try_files $uri $uri/ =404;
}
location /ping {
return 404;
}
}
server {
server_name www.dominio.com;
location / {
# Aplicación normal, con /ping habilitado
try_files $uri $uri/ =404;
}
location /ping {
add_header Content-Type text/plain;
return 200 'pong';
}
}
2. En la aplicación (si usas una sola app que maneja ambos dominios)
Dentro del código, verifica el hostname recibido en la cabecera Host. Si es www.dominio.com, responde al endpoint /ping normalmente. Si es dominio.com, no respondas o devuelve error.
Ejemplo en Node.js con Express:
app.get('/ping', (req, res) => {
if (req.headers.host === 'www.dominio.com') {
res.status(200).send('pong');
} else {
res.status(404).send('Not Found');
}
});
3. Consideraciones DNS y red
- Ambos
dominio.comywww.dominio.comapuntan a la misma IP. - El servidor utiliza las cabeceras HTTP para distinguir qué host fue consultado.
Resumen
- No hay forma de que ICMP ping (a nivel IP) distinga subdominios, porque ambos resuelven a la misma IP y el ping funciona a nivel red.
- Pero a nivel HTTP (puerto 80/443) sí puedes distinguir subdominios y decidir qué app o ruta responde.
- Configura virtual hosts distintos o maneja la cabecera
Hostdentro de la app para habilitar/pingsolo enwww.dominio.com.
Si quieres, puedo ayudarte a armar la configuración para tu servidor web o framework web específico.
¿podrías elaborar el ejemplo para apache2?
Aquí tienes un ejemplo detallado para configurar Apache2 con dos VirtualHosts distintos, uno para dominio.com y otro para www.dominio.com, donde solo el subdominio www.dominio.com responde a un endpoint /ping:
1. Crear directorios para cada sitio (si no existen)
sudo mkdir -p /var/www/dominio.com/public_html
sudo mkdir -p /var/www/www.dominio.com/public_html
Puedes poner archivos o index.html habilitando diferencias si quieres.
2. Crear archivo de configuración para dominio.com:
Archivo: /etc/apache2/sites-available/dominio.com.conf
<VirtualHost *:80>
ServerName dominio.com
DocumentRoot /var/www/dominio.com/public_html
# No existe el ping o devuelve 404
<Location /ping>
Require all denied
</Location>
ErrorLog ${APACHE_LOG_DIR}/dominio.com-error.log
CustomLog ${APACHE_LOG_DIR}/dominio.com-access.log combined
</VirtualHost>
3. Crear archivo de configuración para www.dominio.com:
Archivo: /etc/apache2/sites-available/www.dominio.com.conf
<VirtualHost *:80>
ServerName www.dominio.com
DocumentRoot /var/www/www.dominio.com/public_html
# Habilitar el endpoint /ping que responde "pong"
Alias /ping /var/www/www.dominio.com/ping.php
<Files "ping.php">
Require all granted
</Files>
ErrorLog ${APACHE_LOG_DIR}/www.dominio.com-error.log
CustomLog ${APACHE_LOG_DIR}/www.dominio.com-access.log combined
</VirtualHost>
Crea el archivo /var/www/www.dominio.com/ping.php con este contenido:
<?php
echo "pong";
?>
4. Habilitar ambos sitios y reiniciar Apache
sudo a2ensite dominio.com.conf
sudo a2ensite www.dominio.com.conf
sudo systemctl reload apache2
5. Probar el funcionamiento
- Al acceder a http://dominio.com/ping debe responder con error 403 o 404.
- Al acceder a http://www.dominio.com/ping debe responder con texto
pong.
Notas
- Ambos dominios pueden apuntar a la misma IP DNS.
- Apache usa el encabezado HTTP
Hostpara seleccionar el VirtualHost adecuado. - Puedes personalizar el endpoint
/pingcon cualquier lenguaje o respuesta que quieras.
¿Quieres un ejemplo para HTTPS (SSL) o para otro lenguaje/framework?
No comments yet. Be the first to comment!