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

172

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

usuario1219572
fuente

Respuestas:

284

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 http://symfony.local/desde 4 computadoras diferentes (la principal que aloja tu sitio web, así como una distribución Mac, Windows y Linux conectada (inalámbrica o no) a La computadora principal.

Bosquejo general:

ingrese la descripción de la imagen aquí


1 Configure un host virtual :

Primero debe configurar un host virtual en su httpd-vhosts.confarchivo apache . En XAMP , se puede encontrar este archivo aquí: C:\xampp\apache\conf\extra\httpd-vhosts.conf. En MAMP , se puede encontrar este archivo aquí: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Este paso prepara el servidor web en su computadora para manejar las 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. Necesita cambiar el DocumentRoota donde sea que esté su carpeta principal. Aquí lo he tomado /Applications/MAMP/htdocs/Symfony/como la 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) entienda lo que symfony.localrealmente significa, debe editar el archivo hosts en su computadora. ¡Cada vez que escribe una URL en su navegador, su computadora trata de entender lo que significa! symfony.localno significa nada para una computadora. Por lo tanto, intentará resolver el nombre symfony.locala una dirección IP. Para ello, primero busque en el archivo de 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 preguntará 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 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 escriba symfony.local en esta computadora, su computadora usará la interfaz de bucle invertido para conectarse a symfony.local. Comprenderá que desea trabajar en localhost (127.0.0.1).

3 Acceso symfony.localdesde otra computadora :

Finalmente llegamos a su 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 tenemos que decirles a las otras computadoras cómo pueden encontrar symfony.local! Cómo hacemos esto?

3a Obtenga 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 la que hemos estado trabajando desde el principio). En el terminal, en MAC y tipo LINUXifconfig |grep inet , en WINDOWStipo 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 está intentando acceder al 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á usando 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 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 usar una computadora con Windows). Esto se explica maravillosamente en Creación del entorno de prueba de Windows / IE en OSX .


También puede acceder a su host 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 (excluido el jailbreak).

Bueno, la solución 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 OS arriba usando Squid como servidor proxy.

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


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

@Dre. ¿Hay alguna forma posible de acceder al sitio web desde otra computadora al no editar el archivo host manualmente? digamos que tengo 100 computadoras que quieren 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 cotidianos 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, supongamos que tiene, igual que el anterior, en la misma red, una máquina en la 192.168.1.5que tiene su sitio web. Llamaremos a esa máquina pompei.

$ echo $HOSTNAME
pompei

Igual que antes, esa máquina pompeien 192.168.1.5carreras de un servidor HTTP que sirve su sitio web symfony.local.

Para que cada máquina sepa que symfony.localestá alojada pompei, ahora necesitaremos un servidor DNS personalizado en la red que sepa dónde symfony.localestá alojado. Los dispositivos en la red podrán resolver nombres de dominio servidos pompeiinternamente.

3 sencillos pasos

Step 1: DNS Server

Configure un servidor DNS en su red. Hablemos pompeipor conveniencia y usemos algo como dnsmasq .

Dnsmasq ofrece sistema de nombres de dominio (DNS) transitario , ... .

Queremos pompeiejecutar DNSmasq para manejar solicitudes 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 /etc/dnsmasq.confdepende de su entorno.

Yo personalmente uso no-resolvy 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 no habrá cambios.

Step 2: Firewall

Para funcionar, pompeidebe permitir los 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 que se llegue a su servidor DNS. Continúe y abra ese puerto 53. En Linux, lo usaría clásicamente iptablespara esto.

Compartí 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

Step 3: Router

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

Eso es todo, cuando estás en una máquina y pide symfony.local, se le pedirá a su servidor DNS donde symfony.localse aloja, y tan pronto como se haya recibido la respuesta del servidor DNS y, a continuación enviará el correcto petición HTTP para pompeiel 192.168.1.5.

Te dejo jugar con esto y disfrutar del paseo. Estos 2 pasos son las pautas principales, por lo que tendrá que depurar y pasar algunas horas si es la primera vez que lo hace. Digamos que este es un poco más avanzada de redes, hay servidor DNS primario, los servidores DNS secundario, etc . ¡Buena suerte!

Mick
fuente
Buena respuesta Seguí la última parte hasta que llegué a "Monitorear el tráfico del iPhone con Fiddler". Apunta a la página de inicio de Fiddler. Este debería ser el enlace: conceptdev.blogspot.com/2009/01/…
helpse
He modificado el archivo de host, pero el problema es que también tengo el servidor IIS ejecutándose, por lo que mi "localhost" o "127.0.0.1" apunta al servidor IIS, ¿cómo puedo reemplazarlo por el servidor xamp?
Uzair Ali
1
@ ¿Hay alguna forma posible de acceder al sitio web desde otra computadora al no editar el hostarchivo manualmente? digamos que tengo 100 computadoras que desean acceder al sitio web
Drenyl
1
@Dre Sí, tendría que hacer un cambio en su red para que cada máquina sepa dónde está alojado su sitio web. He agregado información al final de la respuesta. Espero que ayude.
Mick
1
Excelente explicación!
Pastor
25

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

tommyvn
fuente
3
localhost.run funcionó a las mil maravillas. Mi servidor se estaba ejecutando en el puerto 8000 y acaba de cambiar la línea de comando de 80 a 8000.
Isuru
3
¡Guauu! impresionante ... realmente funcionó de una sola vez ... gracias @tommyvn
Jabongg
Es mucho más fácil configurar NGROK que actualizar el archivo de hosts locales. +1
BlackHatSamurai
Solución fácil para prueba rápida
shamila
15

Siempre que ambas máquinas estén en el mismo grupo de trabajo, abra cmd.exela 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.

Deberias hacer eso.

Codrin Eugeniu
fuente
3
Esto funcionaría si el puerto 80 es el puerto de la aplicación (normalmente lo es), pero tenga en cuenta que podríamos estar usando un puerto diferente. Eso significaría http: // + la IP de la máquina de destino + ": PORT_NUMBER"
ggderas
Esta era la solución simple que estaba buscando. @Codrin Eugeniu: Considere incorporar la sugerencia ": PORT_NUMBER" en su respuesta como lo mencionan ggderas. Para mí esto era necesario ya que me conecté a través del puerto 8088 usando Apache Superset.
Ohumeronen
8

En Mac OS X:

  1. En la terminal, ejecute ifconfig | grep 192.para obtener la IP interna de su máquina en su red actual. Puede ser algo como192.168.1.140

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

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

Raphael Rafatpanah
fuente
6

Esta herramienta me ahorró mucho, ya que no tengo permiso de administrador en mi máquina y ya tenía nodejs instalados. 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/

Thiago C. S Ventura
fuente
Ejecuto una aplicación web en localhost: 3000. Utilicé browser-sync start --proxy localhost:3000en una cáscara separada. En otro dispositivo que está conectado a la red escribo: ${computerIP}:3000pero no veo nada. Supongo que hay algo más que debería proporcionar.
Ben Carp
5

Puede ser que sus firewalls le impidan acceder al servidor web del localhost.
Ponga las direcciones IP de las dos redes de seguridad antivirus de sus computadoras 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 símbolo del sistema del cuadro negro)
escriba 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 todas estas cosas funcionen, 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 el comando de comando en su computadora portátil: Inicio> cmd (Enter)
ping 192.168.1.3 (Enter)
Si el ping falla, los firewalls están bloqueando su conexión o su red El cableado es defectuoso. Reinicie su módem o conmutador de red y sus máquinas.
Cierre los programas como los programas de chat que utilizan 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 aleatorio al final

KarlosFontana
fuente
1
Gracias tou @KarlosFontana - también respondiste mi pregunta también. Estaba teniendo problemas para conectar mi iPhone a un servidor que escribí en el escritorio. El iPhone estaba conectado al WiFi de mi PC. Su última línea respondió mi pregunta :-)
Tommy
4

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

verifique lo siguiente, (para ubuntu apache2)

  $ cat /etc/apache2/ports.conf

si se establece lo siguiente,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

luego vuelva a cambiarlo al valor predeterminado

NameVirtualHost *:80  
Listen 80  
conocido
fuente
0

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.

shasi kanth
fuente