Come posso connettermi a questo localhost da un altro computer sulla stessa rete?


172

Attualmente sto lavorando a un progetto e vorrei testarlo su due laptop a casa in cui un laptop si collega all'host locale sull'altro. Sto usando XAMPP. Come faccio a fare questo?

Risposte:


284

Questo è sicuramente possibile. Prenderemo un caso generale con Apache qui.

Supponiamo che tu sia un grande fan di Symfony2 e che desideri accedere al tuo sito Web symfony http://symfony.local/da 4 computer diversi (quello principale che ospita il tuo sito Web, nonché un Mac, una distribuzione Windows e Linux connessa (wireless o no) a il computer principale.

Schizzo generale:

inserisci qui la descrizione dell'immagine


1 Configurare un host virtuale :

Devi prima impostare un host virtuale nel tuo httpd-vhosts.conffile apache . Su xamp , è possibile trovare il file qui: C:\xampp\apache\conf\extra\httpd-vhosts.conf. Su MAMP , è possibile trovare il file qui: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Questo passaggio prepara il server Web sul computer per la gestione delle symfony.localrichieste. È necessario fornire il nome dell'host virtuale e la cartella principale / principale del sito Web. Per fare ciò, aggiungi la seguente riga alla fine di quel file. È necessario modificare il DocumentRootdove si trova la cartella principale. Qui ho preso /Applications/MAMP/htdocs/Symfony/come radice del mio sito web.

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

2 Configura il tuo file hosts :

Perché il client (il tuo browser in quel caso) capisca cosa symfony.localsignifica veramente, devi modificare il file hosts sul tuo computer. Ogni volta che digiti un URL nel tuo browser, il tuo computer cerca di capire cosa significa! symfony.localnon significa nulla per un computer. Quindi proverà a risolvere il nome symfony.localin un indirizzo IP. Lo farà esaminando prima il file hosts sul tuo computer per vedere se può abbinare un indirizzo IP a ciò che hai digitato nella barra degli indirizzi. In caso contrario, verrà richiesto ai server DNS . Il trucco qui è di aggiungere quanto segue al tuo file hosts.

  • Su MAC , questo file è in /private/etc/hosts;
  • Su LINUX , questo file è in /etc/hosts;
  • Su WINDOWS , questo file è in \Windows\system32\private\etc\hosts;
  • Su WINDOWS 7 , questo file è in \Windows\system32\drivers\etc\hosts;
  • Su WINDOWS 10 , questo file è in \Windows\system32\drivers\etc\hosts;

Hosts file

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

D'ora in poi, ogni volta che si digita symfony.local su questo computer, il computer utilizzerà l'interfaccia di loopback per connettersi a symfony.local. Capirà che vuoi lavorare su localhost (127.0.0.1).

3 Accesso symfony.localda un altro computer :

Finalmente arriviamo alla tua domanda principale che è:

Come posso ora accedere al mio sito Web tramite un altro computer?

Bene, ora è facile! Dobbiamo solo dire agli altri computer come sono riusciti a trovare symfony.local! Come facciamo questo?

3a Ottieni l'indirizzo IP del computer che ospita il sito Web :

Dobbiamo prima conoscere l'indirizzo IP sul computer che ospita il sito Web (quello su cui abbiamo lavorato fin dall'inizio). Nel terminale, il MAC e LINUX tipo ifconfig |grep inet, il WINDOWStipo ipconfig. Supponiamo che l'indirizzo IP di questo computer sia 192.168.1.5 .

3b Modifica il file hosts sul computer da cui stai tentando di accedere al sito Web. :

Ancora una volta, su MAC , questo file è in /private/etc/hosts; su LINUX , in /etc/hosts; e su WINDOWS , in \Windows\system32\private\etc\hosts(se stai usando WINDOWS 7 , questo file è presente \Windows\system32\drivers\etc\hosts). Il trucco ora è usare l'indirizzo IP del computer a cui stiamo tentando di accedere / parlare:

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

4 Finalmente goditi i risultati nel tuo browser

Ora puoi accedere al tuo browser e digitare http://symfony.localper vedere meravigliosamente il tuo sito Web su diversi computer! Nota che puoi applicare la stessa strategia se sei un utente OSX per testare il tuo sito Web su Internet Explorer tramite Virtual Box (se non desideri utilizzare un computer Windows). Questo è splendidamente spiegato in Creazione dell'ambiente di test Windows / IE su OSX .


Puoi anche accedere al tuo localhost da dispositivi mobili

Potresti chiederti come accedere al sito Web localhost da un dispositivo mobile. In alcuni casi, non sarai in grado di modificare il file hosts (iPhone, iPad ...) sul tuo dispositivo (escluso il jailbreak).

Bene, la soluzione è quindi installare un server proxy sul computer che ospita il sito Web e connettersi a quel proxy dal tuo iPhone. In realtà è molto ben spiegato nei seguenti post e non è molto lungo da configurare:

Su un Mac, consiglierei: Test di un sito Web Mac OS X utilizzando un nome host locale su un dispositivo mobile : utilizzo di SquidMan come proxy. È una soluzione gratuita al 100%. Alcune persone possono anche usare Charles come server proxy ma costa 50 $.

Su Linux, puoi adattare il Mac OS sopra usando Squid come server proxy.

Su Windows, puoi farlo usando Fiddler . La soluzione è descritta nel seguente post: Monitoraggio del traffico iPhone con Fiddler


Modifica 23/11/2017: Ehi, non voglio modificare il mio file Hosts

@Dre. Qualche modo possibile per accedere al sito Web da un altro computer non modificando manualmente il file host? diciamo che ho 100 computer desiderati per accedere al sito web

Questa è una domanda interessante, e siccome è collegata alla domanda OP, lasciami aiutare.

Dovresti fare una modifica sulla tua rete in modo che ogni macchina sappia dove è ospitato il tuo sito web. La maggior parte dei router di tutti i giorni non lo fa, quindi dovresti eseguire il tuo server DNS sulla tua rete.

Facciamo finta di avere un router (192.168.1.1). Questo router ha un server DHCP e alloca gli indirizzi IP a 100 macchine sulla rete.

Ora, supponiamo che tu abbia, come sopra, sulla stessa rete, una macchina su 192.168.1.5cui ha il tuo sito web. Chiameremo quella macchina pompei.

$ echo $HOSTNAME
pompei

Stessa di prima, quella macchina pompeia 192.168.1.5gestisce un server HTTP che serve il vostro sito web symfony.local.

Perché ogni macchina sappia che symfony.localè ospitato pompei, ora avremo bisogno di un server DNS personalizzato sulla rete che sappia dove symfony.localè ospitato. I dispositivi sulla rete saranno quindi in grado di risolvere i nomi di dominio serviti pompeiinternamente.

3 semplici passaggi.

Step 1: DNS Server

Imposta un server DNS sulla tua rete. Proviamo pompeiper comodità e usiamo qualcosa come dnsmasq .

Dnsmasq fornisce Domain Name System (DNS) spedizioniere , ... .

Vogliamo pompeieseguire DNSmasq per gestire le richieste DNS Hey, pompei, where is symfony.locale rispondere Hey, sure think, it is on 192.168.1.5 but don't take my word for it.

Procedi con l'installazione di dnsmasq, il file di configurazione di dnsmasq si trova in genere in /etc/dnsmasq.confbase al tuo ambiente.

Uso personalmente no-resolve i server di Google server=8.8.8.8 server=8.8.8.4.

* Nota: * SEMPRE riavviare DNSmasq se si modifica il file / etc / hosts in quanto nessuna modifica avrà effetto altrimenti.

Step 2: Firewall

Per funzionare, pompeideve consentire i pacchetti di "dominio" in entrata e in uscita, che vanno da e verso la porta 53. Certo! Questi sono pacchetti DNS e se pompeinon li consentono, non è possibile raggiungere il server DNS. Vai avanti e apri quella porta 53. Su Linux, useresti classicamente iptablesper questo.

Condividendo ciò che mi è venuto in mente, ma molto probabilmente dovrai immergerti nel tuo firewall e capire tutto bene.

#
# 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

Di 'al tuo router che il tuo server DNS è 192.168.1.5ora acceso . Il più delle volte, puoi semplicemente accedere al tuo router e modificarlo manualmente molto facilmente.

Ecco, quando sei su una macchina e chiedi symfony.local, chiederà al tuo server DNS dove symfony.localè ospitato, e non appena avrà ricevuto la sua risposta dal server DNS, invierà quindi la richiesta HTTP corretta su pompeion 192.168.1.5.

Ti ho lasciato giocare e godermi il viaggio. Questi 2 passaggi sono le linee guida principali, quindi dovrai eseguire il debug e dedicare qualche ora se è la prima volta che lo fai. Diciamo che questo è un po 'più avanzato in rete, ci sono Server DNS primario, Server DNS secondari, ecc . In bocca al lupo!


Bella risposta. Ho seguito l'ultima parte fino a "Monitorare il traffico di iPhone con Fiddler". Punta alla homepage di Fiddler. Questo dovrebbe essere il link: conceptdev.blogspot.com/2009/01/…
helpse

Ho modificato il file host ma il problema è che ho anche un server IIS in esecuzione, quindi il mio "localhost" o "127.0.0.1" punta al server IIS come posso sostituirlo con il server xamp?
Uzair Ali,

1
@Mick in qualche modo possibile accedere al sito Web da un altro computer non modificando il hostfile manualmente? diciamo che ho 100 computer desiderati di accedere al sito Web
Drenyl il

1
@Dre Sì, dovresti fare una modifica sulla tua rete in modo che ogni macchina sappia dove è ospitato il tuo sito web. Ho aggiunto informazioni alla fine della risposta. Spero che aiuti.
Mick,

1
Spiegazione eccellente!
Pastore,

25

Per i test su entrambi i laptop sulla stessa rete wireless e su Internet è possibile utilizzare un servizio come http://localhost.run/ o https://ngrok.com/


3
localhost.run ha funzionato come un fascino. Il mio server era in esecuzione sulla porta 8000 e ha appena cambiato la riga di comando da 80 a 8000.
Isuru,

3
Wow! fantastico ... ha funzionato davvero al singolo tentativo ... grazie @tommyvn
Jabongg

È molto più semplice impostare NGROK che aggiornare il file degli host locali. +1
BlackHatSamurai

Soluzione semplice per test rapidi
shamila

15

A condizione che entrambe le macchine siano nello stesso gruppo di lavoro, aperte cmd.exesulla macchina a cui si desidera connettersi, digitare ipconfige annotare l'IP sulla IPv4 Addresslinea.

Quindi, sulla macchina con cui si desidera connettersi, utilizzare http:// + the IP of the target machine.

Questo dovrebbe farlo.


3
Ciò funzionerebbe se la porta 80 è la porta per l'app (normalmente lo è) ma tieni presente che potremmo usare una porta diversa. Ciò significherebbe http: // + IP della macchina target + ": PORT_NUMBER"
ggderas

Questa era la soluzione semplice che stavo cercando. @Codrin Eugeniu: ti preghiamo di considerare di inserire il suggerimento ": PORT_NUMBER" nella tua risposta, come menzionato da ggderas. Per me questo era necessario mentre mi collegavo tramite la porta 8088 usando Apache Superset.
Ohumeronen,

8

Su Mac OS X:

  1. Nel terminale, esegui ifconfig | grep 192.per ottenere l'IP interno della tua macchina sulla sua rete attuale. Potrebbe essere qualcosa del genere192.168.1.140

  2. Avvia un server. Ad esempio, node server.jspuò avviare un server su una porta.

  3. Sul tuo telefono, visita 192.168.1.140:3000o qualunque porta il tuo server stia funzionando.


6

Questo strumento mi ha salvato molto, poiché non ho i permessi di amministratore sulla mia macchina e avevo già installato nodejs. Per qualche motivo la configurazione sulla mia rete non mi dà accesso ad altre macchine semplicemente indicando l'IP sul browser.

# 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/


Corro un webapp su localhost: 3000. Ho usato browser-sync start --proxy localhost:3000in una shell separata. Su un altro dispositivo collegato alla rete scrivo: ${computerIP}:3000ma non vedo nulla. Immagino che ci sia qualcosa in più che dovrei fornire.
Ben Carp,

5

è possibile che i tuoi firewall ti impediscano di accedere al server web del localhost.
Se necessario, inserisci gli indirizzi IP di entrambi i computer della sicurezza Internet della rete antivirus come indirizzi IP sicuri.
Come trovare l'indirizzo IP del tuo PC Windows: Start> (Esegui) digita: cmd (Invio)
(Questo apre il prompt dei comandi della scatola nera)
digita ipconfig (Invio)
Supponiamo che il tuo server web Apache o IIS sia installato sul tuo PC : 192.168.0.3
e vuoi accedere al tuo server web con il tuo laptop. (l'IP del laptop è 192.168.0.5)
Sul PC digiti: http: // localhost / nel browser Firefox o Internet Eplorer per accedere ai tuoi dati sul tuo server web.
Sul tuo laptop digiti http://192.168.0.3/ per accedere al tuo server web sul tuo PC.

Perché tutte queste cose funzionino è necessario aver installato correttamente un server web (ad es. IIS, Apache, XAMP, WAMP ecc.).

Se non funziona, prova a eseguire il ping del PC dal tuo laptop:
Apri comando propmt sul tuo laptop: Start> cmd (Invio)
ping 192.168.1.3 (Invio)
Se il ping fallisce, i firewall stanno bloccando la tua connessione o la tua rete il cablaggio è difettoso. Riavvia il modem o lo switch di rete e le macchine.
Chiudi programmi come i programmi di chat che utilizzano le tue porte.
Puoi anche provare un numero di porta diverso: http: 192.168.0.3: 80 o http: 192.168.0.3: 81 o qualsiasi numero casuale alla fine


1
Grazie @KarlosFontana - hai appena risposto anche alla mia domanda. Ho avuto problemi a connettere il mio iPhone a un server che ho scritto sul desktop. L'iPhone è stato collegato al WiFi del mio PC. La tua ultima riga ha risposto alla mia domanda :-)
Tommy,

4

Questa è una nota a margine se uno non riesce ancora ad accedere a localhost da un altro dispositivo dopo aver seguito il passaggio sopra. Ciò potrebbe essere dovuto al fatto che apache doors.conf è stato configurato per essere utilizzato localmente (127.0.0.1) e non all'esterno.

controlla quanto segue, (per Ubuntu Apache2)

  $ cat /etc/apache2/ports.conf

se è impostato quanto segue,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

quindi riportarlo al valore predefinito

NameVirtualHost *:80  
Listen 80  

0

Se sei su Windows, usa ipconfig per ottenere l'indirizzo IPv4 locale, quindi specificalo nel tuo file di configurazione di Apache: httpd.conf , come:

Listen: 10.20.30.40:80

Riavvia il tuo server Apache e testalo da un altro computer in rete.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.