17 votos

¿Cómo ir a un sitio web en un servidor compartido por su dirección ip?

Tengo un par de preguntas, por favor ayuda:

Puño, puedo acceder a la búsqueda de Google sólo por escribir http://74.125.224.211, debido a que esta es la dirección IP devuelta por nslookup.

Sin embargo, yo no podía hacerlo con la dirección IP devuelta de www.yahoo.com. ¿Cómo hago para ir a la página de búsqueda de Yahoo por su IP?

Otro ejemplo, http://www.allaboutcircuits.com va a resolver a 68.233.243.63 del servidor DNS, pero si voy a la http://68.233.243.63, me sale "Hola mundo!".

En segundo lugar, por alguna razón, hay algo mal con las resoluciones DNS con mi servicio de alojamiento web (no va a ser fijo !!). Así comandos como

get_file_contents("http://www.allaboutcircuits.com");

volverá php_network_getaddresses: getaddrinfo failed: Name or service not known

¿Cómo puedo obtener todo esto con la dirección IP,

68.233.243.63

Quiero decir, unir, de alguna manera el nombre de host HTTP parámetro get_file_contents()?

Me gustaría resolver esto en mi propio lado (en mi código), sin solución de problemas/ajuste será realizado por el servidor de administración.

16voto

Ethan Puntos1857

En su script PHP, cuando puede acceder a él por dirección IP, usted también necesita enviar una Host: encabezado en su petición con el nombre de dominio correcto.

Esta pregunta sobre desbordamiento de pila explica cómo hacerlo: http://stackoverflow.com/questions/356705/how-to-send-a-header-using-a-http-request-through-a-curl-call

10voto

Brandon Puntos16

Como wallyk dijo, es que los servidores virtuales

Tomar este ejemplo para apache

<VirtualHost *:80>
ServerName example2.com
DocumentRoot C:/www/example2.com
</VirtualHost>

<VirtualHost *:80>
ServerName example.com
DocumentRoot C:/www/example.com
</VirtualHost>

En c:\www\example.com hacer un archivo de índice diciendo: "¡Hola, Mundo! example.com"

en c:\www\example2.com hacer un archivo de índice diciendo "Hola Mundo! example2.com"

Y modificar el archivo hosts para

127.0.0.1 example.com
127.0.0.1 example2.com

A continuación, vaya a http://example.com a continuación, vaya a http://example2.com

Así es cómo usted puede tener varios sitios por una sola ip

Así que, básicamente, la respuesta es no, usted no será capaz de conseguir que el sitio de la ip.

4voto

Bavi_H Puntos4931

Usted dice que desea especificar manualmente tanto el nombre de host y la dirección IP, en lugar de depender de un servidor DNS fuera de su control. Mirando los comentarios en el file_get_contents documentación, veo que los comentaristas no se han resuelto problemas similares mediante la creación de un contexto que contiene la necesaria cabecera Host:. Algo como esto:

$context = stream_context_create(array('http' => array('header' => 'Host: www.allaboutcircuits.com')));
$data = file_get_contents('http://68.233.243.63/', 0, $context);

Por supuesto, ser conscientes de que la situación de desventaja para especificar manualmente el nombre de host y la dirección IP es que si cambia la dirección IP en el futuro (por ejemplo, si el sitio se mueve a un nuevo proveedor de hosting), el código podría dejar de funcionar hasta que se actualice manualmente la dirección IP.

2voto

dr jimbob Puntos356

La dirección IP no es suficiente para identificar el sitio en el que quieres ir a cuando varios hosts virtuales se ejecutan en el mismo puerto/servidor. En ese caso, es necesario especificar el encabezado de Host en la solicitud HTTP que identifica el nombre del servidor. Puede hacerlo directamente a través de telnet al puerto 80:

$ telnet 68.233.243.63 80
Trying 68.233.243.63...
Connected to 68.233.243.63.
Escape character is '^]'.
GET / HTTP/1.1
Host: www.allaboutcircuits.com

donde se escribe el comando telnet, y el de OBTENER y de Acogida de las líneas y, a continuación, obtener el código fuente HTML devuelto por el servidor.

O usted puede utilizar curl donde específicamente agregar el encabezado (con la -H flag).

curl 68.233.243.63 -H "Host: www.allaboutcircuits.com"

1voto

Chochos Puntos3364

En segundo lugar, por alguna razón, hay algo mal con las resoluciones DNS con mi servicio de alojamiento web (no va a ser fijo !!)

Usted podría utilizar otro servidor DNS en el lado del cliente, en caso de que no los web host-8.8.8.8 y 8.8.8.6 son administrados por Google, y 4.4.4.2 es un común modo de espera. Namebench te permitirá encontrar el más rápido. Como alternativa, puede utilizar un servicio de proxy de algún tipo (tengo mis propios en un VPS, o el uso de Tor, pero hay otras opciones).

Ya que este es el PHP, incluso una opción más fácil sería para ejecutar el código en otro sistema. Kludges no son fáciles de mantener.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by:

;