¿Cómo me conecto a este localhost desde otra computadora en la misma red?

Resuelto user1219572 asked hace 12 años • 8 respuestas

Actualmente estoy trabajando en un proyecto y me gustaría probarlo en dos computadoras portátiles en casa, donde una se conecta al host local de la otra. Estoy usando XAMPP. ¿Cómo hago esto?

user1219572 avatar Mar 13 '12 17:03 user1219572
Aceptado

Eso es definitivamente posible. Aquí tomaremos un caso general con Apache.

Digamos que eres un gran fanático de Symfony2 y te gustaría acceder a tu sitio web Symfony desde http://symfony.local/4 computadoras diferentes (la principal aloja tu sitio web, así como una Mac, una distribución Windows y Linux conectadas (de forma inalámbrica o no) a la computadora principal.

Bosquejo general:

ingrese la descripción de la imagen aquí


1 Configurar un servidor virtual :

Primero necesitas configurar un host virtual en tu httpd-vhosts.confarchivo apache. En XAMP , puede encontrar este archivo aquí: C:\xampp\apache\conf\extra\httpd-vhosts.conf. En MAMP , puede encontrar este archivo aquí: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Este paso prepara el servidor web de su computadora para manejar symfony.localsolicitudes. Debe proporcionar el nombre del host virtual, así como la carpeta raíz/principal de su sitio web. Para hacer esto, agregue la siguiente línea al final de ese archivo. Debe cambiar a DocumentRootdonde esté su carpeta principal. Aquí lo he tomado /Applications/MAMP/htdocs/Symfony/como raíz de mi sitio web.

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 Configure su archivo de hosts :

Para que el cliente (su navegador en ese caso) comprenda lo que symfony.localrealmente significa, debe editar el archivo de hosts en su computadora. ¡Cada vez que escribes una URL en tu navegador, tu computadora intenta entender lo que significa! symfony.localno significa nada para una computadora. Entonces intentará resolver el nombre symfony.localen una dirección IP. Lo hará mirando primero el archivo de hosts de su computadora para ver si puede hacer coincidir una dirección IP con lo que escribió en la barra de direcciones. Si no puede, solicitará servidores DNS . El truco aquí consiste en agregar lo siguiente a su archivo de hosts.

  • En MAC , este archivo está en /private/etc/hosts;
  • En LINUX , este archivo está en formato /etc/hosts;
  • En WINDOWS , este archivo está en \Windows\system32\private\etc\hosts;
  • En WINDOWS 7 , este archivo está en \Windows\system32\drivers\etc\hosts;
  • En WINDOWS 10 , este archivo está en \Windows\system32\drivers\etc\hosts;

Hosts file

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local

De ahora en adelante, cada vez que escribas symfony.local en esta computadora, tu computadora utilizará la interfaz loopback para conectarse a symfony.local. Entenderá que desea trabajar en localhost (127.0.0.1).

3 Acceso symfony.localdesde otro ordenador :

Finalmente llegamos a su pregunta principal que es:

¿Cómo puedo acceder ahora a mi sitio web a través de otra computadora?

Bueno, ¡ahora esto es fácil! ¡Solo tenemos que decirles a las otras computadoras cómo pudieron encontrarlo symfony.local! Cómo hacemos esto?

3a Obtenga la dirección IP del ordenador que aloja el sitio web :

Primero necesitamos saber la dirección IP del ordenador que aloja el sitio web (en el que hemos estado trabajando desde el principio). En el terminal, en MAC y LINUX escribe ifconfig |grep inet, en WINDOWSescribe ipconfig. Supongamos que la dirección IP de esta computadora es 192.168.1.5 .

3b Edite el archivo de hosts en la computadora desde la que intenta acceder al sitio web. :

Nuevamente, en MAC , este archivo está en formato /private/etc/hosts; en LINUX , en /etc/hosts; y en WINDOWS , en \Windows\system32\private\etc\hosts(si estás usando WINDOWS 7 , este archivo está en \Windows\system32\drivers\etc\hosts).. El truco ahora consiste en usar la dirección IP de la computadora a la que estamos intentando acceder/hablar:

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local

4 Finalmente disfruta de los resultados en tu navegador.

¡Ahora puede ingresar a su navegador y escribir http://symfony.localpara ver bellamente su sitio web en diferentes computadoras! Tenga en cuenta que puede aplicar la misma estrategia si es un usuario de OSX para probar su sitio web en Internet Explorer a través de Virtual Box (si no desea utilizar una computadora con Windows). Esto se explica maravillosamente en Cómo crear su entorno de prueba de Windows/IE en OSX .


También puedes acceder a tu localhost desde dispositivos móviles

Quizás se pregunte cómo acceder a su sitio web localhost desde un dispositivo móvil. En algunos casos, no podrás modificar el archivo hosts (iPhone, iPad...) de tu dispositivo (excluido el jailbreak).

Bueno, la solución entonces es instalar un servidor proxy en la máquina que aloja el sitio web y conectarse a ese proxy desde su iPhone. En realidad, está muy bien explicado en las siguientes publicaciones y no es tan largo de configurar:

En una Mac, recomendaría: Probar un sitio web de Mac OS X usando un nombre de host local en un dispositivo móvil : Usar SquidMan como proxy. Es una solución 100% gratuita. Algunas personas también pueden usar Charles como servidor proxy, pero cuesta 50$.

En Linux, puede adaptar el sistema operativo Mac anterior utilizando Squid como servidor proxy.

En Windows, puedes hacerlo usando Fiddler . La solución se describe en la siguiente publicación: Monitoreo del tráfico de iPhone con Fiddler


Editar 23/11/2017: Oye, no quiero modificar mi archivo Hosts

@Dre. ¿Alguna forma posible de acceder al sitio web desde otra computadora sin editar el archivo host manualmente? digamos que tengo 100 computadoras que desean acceder al sitio web

Esta es una pregunta interesante y, como está relacionada con la pregunta OP, déjame ayudarte.

Tendría que hacer un cambio en su red para que cada máquina sepa dónde está alojado su sitio web. La mayoría de los enrutadores comunes no hacen eso, por lo que tendría que ejecutar su propio servidor DNS en su red.

Supongamos que tiene un enrutador (192.168.1.1). Este enrutador tiene un servidor DHCP y asigna direcciones IP a 100 máquinas en la red.

Ahora, digamos que tiene, igual que arriba, en la misma red, una máquina en 192.168.1.5la que tiene su sitio web. Llamaremos a esa máquina pompei.

$ echo $HOSTNAME
pompei

Igual que antes, esa máquina pompeiejecuta 192.168.1.5un servidor HTTP que sirve a su sitio web symfony.local.

Para que cada máquina sepa en qué symfony.localestá alojada, pompeiahora necesitaremos un servidor DNS personalizado en la red que sepa dónde symfony.localestá alojada. Los dispositivos de la red podrán entonces resolver los nombres de dominio atendidos pompeiinternamente.

3 sencillos pasos.

Step 1: DNS Server

Configure un servidor DNS en su red. Tengámoslo activado pompeipor conveniencia y usemos algo como dnsmasq .

Dnsmasq proporciona reenviador del sistema de nombres de dominio (DNS ) , ....

Queremos pompeiejecutar DNSmasq para manejar las solicitudes de DNS Hey, pompei, where is symfony.localy responder Hey, sure think, it is on 192.168.1.5 but don't take my word for it.

Continúe instalando dnsmasq, el archivo de configuración de dnsmasq generalmente se encuentra /etc/dnsmasq.confdependiendo de su entorno.

Yo personalmente uso no-resolvlos servidores de Google server=8.8.8.8 server=8.8.8.4.

*Nota:* SIEMPRE reinicie DNSmasq si modifica el archivo /etc/hosts, ya que de lo contrario ningún cambio tendrá efecto.

Step 2: Firewall

Para funcionar, pompeies necesario permitir paquetes de 'dominio' entrantes y salientes, que van desde y hacia el puerto 53. ¡Por supuesto! Estos son paquetes DNS y, si pompeino los permite, no hay forma de acceder a su servidor DNS. Continúe y abra el puerto 53. En Linux, normalmente lo usaría iptablespara esto.

Comparto lo que se me ocurrió, pero es muy probable que tengas que sumergirte en tu firewall y comprender todo bien.

#
# Allow outbound DNS port 53
#
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 iptables -A INPUT -p udp --dport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

Step 3: Router

Dígale a su enrutador que su servidor DNS está encendido 192.168.1.5ahora. La mayoría de las veces, puedes simplemente iniciar sesión en tu enrutador y cambiar esto manualmente con mucha facilidad.

Eso es todo. Cuando esté en una máquina y solicite symfony.local, le preguntará a su servidor DNS dónde symfony.localestá alojado y, tan pronto como haya recibido la respuesta del servidor DNS, enviará la solicitud HTTPpompei adecuada a 192.168.1.5.

Te dejo jugar con esto y disfrutar el viaje. Estos 2 pasos son las pautas principales, por lo que tendrás que depurar y dedicar algunas horas si es la primera vez que lo haces. Digamos que se trata de una red un poco más avanzada, hay servidores DNS primarios, servidores DNS secundarios , etc. ¡Buena suerte!

Mick avatar Mar 15 '2013 11:03 Mick

Para realizar pruebas en ambas computadoras portátiles con la misma conexión inalámbrica y a través de Internet, puede usar un servicio como http://localhost.run/ o https://ngrok.com/

tommyvn avatar Mar 15 '2017 10:03 tommyvn

Siempre que ambas máquinas estén en el mismo grupo de trabajo, abra cmd.exeen la máquina a la que desea conectarse, escriba ipconfigy anote la IP en la IPv4 Addresslínea.

Luego, en la máquina con la que desea conectarse, use

http://{the IP of the target machine}:{port number}

Por ejemplo http://192.168.0.1:80, si su sitio se ejecuta en el puerto 80.

Deberias hacer eso.

Codrin Eugeniu avatar Mar 13 '2012 10:03 Codrin Eugeniu

En MacOS X:

  1. En la terminal, ejecute ifconfigpara obtener la IP interna de su máquina en su red actual. Puede ser algo como 192.168.1.140o 10.0.1.174.

  2. Inicie un servidor. Por ejemplo, node server.jspuede iniciar un servidor en algún puerto.

  3. En su teléfono, visite la dirección IP (p. ej. 192.168.1.140:3000) y asegúrese de especificar el puerto.

Raphael Rafatpanah avatar Apr 24 '2017 14:04 Raphael Rafatpanah