¿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 casa, donde una se conecta al host local de la otra. Estoy usando XAMPP. ¿Cómo hago esto?
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:
1 Configurar un servidor virtual :
Primero necesitas configurar un host virtual en tu httpd-vhosts.conf
archivo 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.local
solicitudes. 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 DocumentRoot
donde 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.local
realmente 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.local
no significa nada para una computadora. Entonces intentará resolver el nombre symfony.local
en 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.local
desde 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 WINDOWS
escribe 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.local
para 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.5
la que tiene su sitio web. Llamaremos a esa máquina pompei.
$ echo $HOSTNAME
pompei
Igual que antes, esa máquina pompeiejecuta 192.168.1.5
un servidor HTTP que sirve a su sitio web symfony.local
.
Para que cada máquina sepa en qué symfony.local
está alojada, pompeiahora necesitaremos un servidor DNS personalizado en la red que sepa dónde symfony.local
está 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.local
y 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.conf
dependiendo de su entorno.
Yo personalmente uso no-resolv
los 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 iptables
para 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.5
ahora. 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.local
está 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!
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/
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 IPv4 Address
lí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.
En MacOS X:
En la terminal, ejecute
ifconfig
para obtener la IP interna de su máquina en su red actual. Puede ser algo como192.168.1.140
o10.0.1.174
.Inicie un servidor. Por ejemplo,
node server.js
puede iniciar un servidor en algún puerto.En su teléfono, visite la dirección IP (p. ej.
192.168.1.140:3000
) y asegúrese de especificar el puerto.