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

Actualmente estoy trabajando en un proyecto y me gustaría probarlo en dos computadoras portátiles en el hogar, donde una computadora portátil se conecta con el servidor local por el otro. Estoy usando XAMPP. ¿Cómo hago esto?

Eso es definitivamente posible. Tomaremos un caso general con Apache aquí.

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

Bosquejo general:

enter image description here


1 Configure un host virtual :

Primero necesita configurar un host virtual en su archivo apache httpd-vhosts.conf . 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 en su computadora para manejar symfony.local solicitudes symfony.local . Debe proporcionar el nombre del host virtual y la carpeta raíz / principal de su sitio web. Para hacer esto, agregue la siguiente línea al final de ese archivo. Necesita cambiar DocumentRoot a donde sea que esté su carpeta principal. Aquí he tomado /Applications/MAMP/htdocs/Symfony/ como la raíz de mi sitio web.

  DocumentRoot "/Applications/MAMP/htdocs/Symfony/" ServerName symfony.local  

2 Configure su archivo de hosts :

Para que el cliente (su navegador en ese caso) entienda lo que realmente significa symfony.local , necesita editar el archivo de hosts en su computadora. Cada vez que escribe una URL en su navegador, ¡su computadora intenta comprender lo que significa! symfony.local no significa nada para una computadora. Por lo tanto, intentará resolver el nombre symfony.local en una dirección IP. Hará esto primero mirando en el archivo hosts en su computadora para ver si puede hacer coincidir una dirección IP con lo que escribió en la barra de direcciones. Si no puede, le pedirá a los servidores DNS . El truco aquí es agregar lo siguiente a su archivo de hosts.

  • En MAC , este archivo está en /private/etc/hosts ;
  • En LINUX , este archivo está en /etc/hosts ;
  • En WINDOWS , este archivo se encuentra 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 ;

Archivo de hosts

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

A partir de ahora, cada vez que escriba symfony.local en esta computadora, su computadora usará la interfaz de bucle invertido para conectarse a symfony.local. Entenderá que desea trabajar en localhost (127.0.0.1).

3 Acceda a symfony.local desde otra computadora :

Finalmente llegamos a tu pregunta principal que es:

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

¡Bueno, esto ahora es fácil! Solo necesitamos decirle a las otras computadoras cómo pueden encontrar symfony.local ! Cómo hacemos esto?

3a Obtener la dirección IP de la computadora que aloja el sitio web :

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

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

De nuevo, en MAC , este archivo está en /private/etc/hosts ; en LINUX , en /etc/hosts ; y en WINDOWS , en \Windows\system32\private\etc\hosts (si está utilizando WINDOWS 7 , este archivo está en \Windows\system32\drivers\etc\hosts ). El truco ahora es usar la dirección IP de la computadora a la que intentamos acceder / hablar:

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

4 Finalmente disfruta los resultados en tu navegador

Ahora puede http://symfony.local a su navegador y escribir http://symfony.local para ver su sitio web bellamente en diferentes computadoras. Tenga en cuenta que puede aplicar la misma estrategia si es 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 muy bien en Crafting Your Windows / IE Test Environment en OSX .


También puede acceder a su servidor local 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á modificar el archivo de hosts (iPhone, iPad …) en su dispositivo (jailbreaking excluido).

Bueno, la solución es instalar un servidor proxy en la máquina que aloja el sitio web y conectarse a ese proxy desde tu 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% gratis. Algunas personas también pueden usar Charles como servidor proxy, pero es 50 $.

En Linux, puede adaptar el Mac OS arriba utilizando Squid como servidor proxy.

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


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

@Dre. ¿Alguna manera posible de acceder al sitio web desde otra computadora al no editar el archivo de host manualmente? digamos que tengo 100 computadoras querían acceder al sitio web

Esta es una pregunta interesante, y como está relacionada con la pregunta OP, permítanme ayudar.

Debería 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 cotidianos no hacen eso, por lo que tendría que ejecutar su propio servidor DNS en su red.

Imaginemos 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.5 que tiene su sitio web. Llamaremos a esa máquina pompei .

 $ echo $HOSTNAME pompei 

Al igual que antes, esa máquina pompei en 192.168.1.5 ejecuta un servidor HTTP que sirve su sitio web symfony.local .

Para que cada máquina sepa que symfony.local está alojado en pompei , ahora necesitaremos un servidor DNS personalizado en la red que sepa dónde se aloja symfony.local . Los dispositivos en la red podrán resolver los nombres de dominio servidos por pompei internamente.

3 sencillos pasos.

Paso 1: Servidor DNS

Configure un Servidor DNS en su red. Vamos a tenerlo en pompei por conveniencia y usar algo como dnsmasq .

Dnsmasq proporciona el promotor del Sistema de nombres de dominio (DNS) , …

Queremos que pompei ejecute DNSmasq para manejar las solicitudes DNS Hey, pompei, where is symfony.local y responde Hey, sure think, it is on 192.168.1.5 but don't take my word for it .

Continúe con la instalación de dnsmasq, el archivo de configuración de dnsmasq generalmente está en /etc/dnsmasq.conf dependiendo de su entorno.

Personalmente uso servidores no-resolv y 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 no se aplicará ningún cambio.

Paso 2: cortafuegos

Para trabajar, pompei necesita permitir paquetes de ‘dominio’ entrantes y salientes, que van desde y hacia el puerto 53. ¡Por supuesto! Estos son paquetes DNS y si pompei no los permite, no hay forma de que se llegue a su servidor DNS. Continúa y abre ese puerto 53. En Linux, clásicamente iptables para esto.

Compartiendo lo que se me ocurrió pero es muy probable que tengas que sumergirte en tu firewall y entender 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 

Paso 3: enrutador

Dígale a su enrutador que su servidor DNS está en 192.168.1.5 ahora. La mayoría de las veces, puede iniciar sesión en su enrutador y cambiar esto de forma manual muy fácilmente.

Eso es todo, cuando estés en una máquina y solicites symfony.local , le preguntará a tu servidor DNS dónde está alojado symfony.local , y tan pronto como reciba su respuesta del servidor DNS, enviará la solicitud HTTP adecuada. a pompei en 192.168.1.5 .

Te dejo jugar con esto y disfrutar del viaje. Estos 2 pasos son las pautas principales, por lo que deberá depurar y pasar unas horas si es la primera vez que lo hace. Digamos que se trata de una red un poco más avanzada, hay un Servidor DNS primario, Servidores DNS secundarios, etc. ¡Buena suerte!

Siempre que ambas máquinas estén en el mismo grupo de trabajo, abra cmd.exe en la máquina a la que desea conectarse, escriba ipconfig y anote la IP en la línea IPv4 Address .

Luego, en la máquina con la que desea conectarse, use http:// + the IP of the target machine .

Deberias hacer eso.

Para realizar pruebas en ambas computadoras portátiles en la misma red inalámbrica y en Internet, puede usar un servicio como http://localhost.run/ o https://ngrok.com/

Es posible que sus firewalls impidan el acceso al servidor web del localhost.
Coloque las direcciones IP de la seguridad de la red antivirus de seguridad de Internet de sus equipos como direcciones IP seguras, si es necesario.
Cómo encontrar la dirección IP de su PC con Windows: Inicio> (Ejecutar) escriba: cmd (Enter)
(Esto abre el indicador de comando del cuadro negro)
escribe en ipconfig (Enter)
Digamos que su servidor web Apache o IIS está instalado en su PC: 192.168.0.3
y desea acceder a su servidor web con su computadora portátil. (la IP del portátil es 192.168.0.5)
En su PC, escriba: http: // localhost / dentro de su navegador Firefox o Internet Eplorer para acceder a sus datos en su servidor web.
En su computadora portátil, escriba http://192.168.0.3/ para acceder a su servidor web en su PC.

Para que todo esto funcione, debe haber instalado un servidor web correctamente (por ejemplo, IIS, Apache, XAMP, WAMP, etc.).

Si no funciona, intente hacer ping a su PC desde su computadora portátil:
Abra comando de comando en su computadora portátil: Inicio> cmd (Enter)
ping 192.168.1.3 (Enter)
Si el ping falla, entonces los firewalls están bloqueando su conexión o su cable de red está defectuoso. Reinicie su módem o conmutador de red y sus máquinas.
Cierre progtwigs como los progtwigs de chat que están usando sus puertos.
También puede probar un número de puerto diferente: http: 192.168.0.3: 80 o http: 192.168.0.3: 81 o cualquier número al azar al final

Esta herramienta me salvó mucho, ya que no tengo permiso de administrador en mi máquina y ya tenía nodejs instalado. Por alguna razón, la configuración en mi red no me da acceso a otras máquinas simplemente apuntando la IP en el navegador.

 # Using a local.dev vhost $ browser-sync start --proxy # Using a local.dev vhost with PORT $ browser-sync start --proxy local.dev:8001 # Using a localhost address $ browser-sync start --proxy localhost:8001 # Using a localhost address in a sub-dir $ browser-sync start --proxy localhost:8080/site1 

http://www.browsersync.io/docs/command-line/

Esta es una nota al margen si todavía no se puede acceder a localhost desde otros dispositivos después de seguir el paso anterior. Esto podría deberse a apache ports.conf se ha configurado para servir localmente (127.0.0.1) y no en el exterior.

revisa lo siguiente, (para ubuntu apache2)

  $ cat /etc/apache2/ports.conf 

si se establece lo siguiente,

 NameVirtualHost *:80 Listen 127.0.0.1:80 

luego cámbielo a su valor predeterminado

 NameVirtualHost *:80 Listen 80 

En Mac OS X:

  1. En la terminal, ejecuta ifconfig | grep 192. ifconfig | grep 192. para obtener la IP interna de su máquina en su red actual. Puede ser algo así como 192.168.1.140

  2. Comience un servidor. Por ejemplo, el node server.js puede iniciar un servidor en algún puerto.

  3. En su teléfono, visite 192.168.1.140:3000 o el puerto en el que se esté ejecutando su servidor.

Si está en Windows, use ipconfig para obtener la dirección IPv4 local y luego especifique eso en su archivo de configuración de Apache: httpd.conf , como:

 Listen: 10.20.30.40:80 

Reinicie su servidor Apache y pruébelo desde otra computadora en la red.