Estoy usando el servidor web Apache en CentOS y necesito deshabilitar la capacidad de las personas para acceder al sitio web mediante el uso de la dirección IP del servidor en un navegador web. Lo quiero para que cuando alguien intente buscar la dirección IP reciba un mensaje de error prohibido.
¿Qué configuraciones serían necesarias para hacer eso?
apache-2.2
centos
Amr Elkhedewy
fuente
fuente
Puede lograr esto con mod_rewrite (ya sea en el
.htaccess
archivo, o en el contexto predeterminado del servidor, o en un VirtualHost separado dondeServerName
está la dirección IP del host):Esto dice que si el encabezado HTTP_HOST coincide con la dirección IP 1.2.3.4, entonces cualquier solicitud debe cumplirse con a
403 Forbidden
. Cualquier solicitud que tenga otro encabezado HTTP_HOST (por ejemplo, uno con el nombre de dominio real en lugar de la dirección IP) no debería verse afectada.fuente
No puede bloquear el acceso directo por IP. Debe permitir la conexión pero luego decidir qué hacer con ella. Esto podría ser devolver un 403, un 404 o redirigirlos a la página deseada. Puedes hacer esto con mod_rewrite.
Esto coincidirá con el encabezado HTTP HOST pasado por el cliente web. Todas las demás solicitudes pasarían.
Sin embargo, es posible que desee normalizar sus URL para fines de SEO.
Con este enfoque, reescribirá todo lo que no coincida con el resultado deseado.
Referencia: https://httpd.apache.org/docs/2.0/rewrite/rewrite_guide.html#canonicalurl
Referencia: http://en.wikipedia.org/wiki/URL_normalization
fuente
Esta solución no cubre todos los casos.
Reemplace cualquier número o punto en la URL de IP por su% ## por ejemplo 1 por% 31 ... 8 por% 38 y llegará a la IP, no a la url del dominio.
Supongamos que esta IP incorrecta, utilizada para facilitar la explicación: 123.45.6.789
Debe usar las 2 alternativas para todos los dígitos y puntos: el punto es% 2E y 0..9 son% 30 ..% 39
Feo, puede reducirse con {1,3} y restringirse a una IP válida, pero como lo es para su IP, no es necesario que lo haga.
No olvide los puertos como ": 80". HTTP_HOST lo contiene y SERVER_NAME no es confiable.
fuente