it-swarm-eu.dev

Accedi ad un host virtuale da un'altra macchina tramite LAN

  • Sto usando Windows 7 con il server Wamp 2.2. 
  • Ho installato 2 host virtuali: www.project1.com e www.project2.com
  • Ho modificato i file "hosts", httpd.conf , e httpd-vhosts.conf , con le modifiche che ho citato di seguito. 

Usando il mio browser, quando digito www.project1.com o www.project2.com, riesco ad aprire le mie pagine web sul portatile su cui è installato il server. 

Cambiamenti nel file "hosts": Ho aggiunto i seguenti alla fine del file: -

127.0.0.1       localhost
127.0.0.1       www.project2.com
127.0.0.1       www.project1.com

Modifiche nel file httpd.conf: -

Include conf/extra/httpd-vhosts.conf

Modifiche nel file httpd-vhosts: -

NameVirtualHost *:80

<Directory "D:/websites/">
    AllowOverride All
    Order Deny,Allow
    Allow from all
    </Directory>
<VirtualHost 127.0.0.1>
    DocumentRoot "D:/websites/wamp/www/"
    ServerName localhost
</VirtualHost>


<VirtualHost 127.0.0.1>
    DocumentRoot "D:/websites/project1/"
    ServerName www.project1.com
</VirtualHost>


<VirtualHost 127.0.0.1>
    DocumentRoot "D:/websites/project2/"
    ServerName www.project2.com
</VirtualHost>


Adesso; dato che posso aprire queste pagine web da un browser in PC_1 (quello con il server), come posso accedere a queste pagine web da un browser in PC_2? (Intendo qualsiasi PC connesso a PC_1 via LAN.)

26
jatin3893

Nella direttiva virtualhost, cambia 127.0.0.1 in *:80 e, come ha detto Gabriel, aggiungi una voce al file hosts nell'altra macchina, aggiungendo il tuo dominio da associare all'IP del tuo server.

Quando metti un IP esplicito nella direttiva, Apache ascolterà solo su quell'IP, ma il jolly gli dirà di collegarsi a tutti gli IP disponibili.

<VirtualHost *:80>
    DocumentRoot "D:/websites/project1/"
    ServerName www.project1.com
</VirtualHost>

Ad esempio, se il tuo server è su 192.168.1.70, nelle altre macchine della tua LAN, la voce degli host sarà simile a:

192.168.1.70     www.project1.com

Riavviare Apache e dovrebbe funzionare correttamente. 

Come nota, quando si utilizzano virtualhosts, Apache utilizzerà la prima definizione come predefinita per quando non è possibile creare una corrispondenza tra il dominio passato nell'intestazione della richiesta HTTP e l'installazione dei siti nella configurazione, motivo per cui l'impostazione predefinita pagina stava comparendo. 

Hai detto ad Apache di legarsi a tutti gli IP con la direttiva NameVirtualHost *:80, ma poi non hai configurato un sito per quell'IP esterno. Spero che sia d'aiuto!

22
dmp

Oltre alla risposta di danp, è possibile accedere all'host virtuale senza dover modificare il file etc/hosts della macchina client assegnando una porta all'host virtuale . Questo è l'ideale se si desidera accedere al server con un dispositivo mobile o tablet:

  1. Modifica il file httpd.conf del server su:

    \wamp\bin\Apache\apache2.2.x\conf\httpd.conf
    

    Cerca "Listen" (attorno alla riga 61). Dovresti vedere quanto segue che consente ad Apache di ascoltare la porta 80:

    Listen 0.0.0.0:80
    Listen [::0]:80
    

    Aggiungi le seguenti linee per aggiungere l'ascolto per port 81 (o qualsiasi porta):

    Listen 0.0.0.0:81
    Listen [::0]:81
    
  2. Modifica il file httpd-vhosts.conf su:

    \wamp\bin\Apache\apache2.2.x\conf\extra\httpd-vhosts.conf
    

    Cambia il tuo "Virtual Host" tag su port 81:

    <VirtualHost *:81>
        DocumentRoot "D:/websites/project1/"
        ServerName www.project1.com
    </VirtualHost>
    
  3. Riavvia il server Apache.

  4. Sul computer client/tablet/mobile, sul browser web, inserire l'indirizzo IP del server (192.168.0.10, o qualsiasi IP) seguito dal numero di porta nel seguente formato:

    http://192.168.0.10:81
    
20
EdC

Ci sono due computer nella rete locale.

Installazione del computer (192.168.1.70) (D:\wamp\bin\Apache\Apache2.2.11\conf\extra\httpd-vhosts.conf):

<VirtualHost *:80>
    DocumentRoot "D:/websites/project1/"
    ServerName www.project1.com
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "D:/websites/project2/"
    ServerName www.project2.com
</VirtualHost>

Configurazione del computer B (c:/windows/system32/drives/etc/hosts):

192.168.1.70    www.project1.com
192.168.1.70    www.project2.com

B accesso A, Il mio progetto sta funzionando.

5
W.F. Yang

Un paio di punti aggiornati da considerare per la risposta selezionata:

  1. NameVirtualHost non è più utilizzato dopo Apache version 2.3.11 e può essere omesso.

    In 2.3.11 e versioni successive, ogni volta che un indirizzo IP e una combinazione di porte sono utilizzato in più host virtuali, l'hosting virtuale basato sul nome è automaticamente abilitato per quell'indirizzo.

  2. Poiché stiamo parlando di hosting di un sito Web via LAN, impostiamo un requisito .__ * per accettare solo connessioni da indirizzi IP sulla tua rete locale Ad esempio, su un router Linksys comune, l'indirizzo IP Predefinito assegnato a ciascun dispositivo sulla rete è compreso tra 192.168.1.100a 192.168.1.255. È possibile consentire la connessione da tutti i dispositivi sulla LAN con un indirizzo IP 192.168.1.XXX utilizzando Require ip 192.168.1 (Si noti che l'ottetto finale è rimasto fuori dall'IP per consentire l'intero intervallo ).

    Ciò consente di configurare l'accesso per progetto in modo che uno possa essere Disponibile su LAN e un altro sia disponibile solo localmente.

    # This will allow all LAN connections to www.project1.com
    <VirtualHost *:80>
        DocumentRoot "D:/websites/project1/"
        <Directory  "D:/websites/project1/">
            Require local
            Require ip 192.168.1
        </Directory>
        ServerName www.project1.com
    </VirtualHost>
    
    # This will allow only the machine hosting the website to access www.project2.com
    <VirtualHost *:80>
        DocumentRoot "D:/websites/project2/"
        <Directory  "D:/websites/project2/">
            Require local
        </Directory>
        ServerName www.project2.com
    </VirtualHost>
    

    Anche se il tuo sito non sarà pubblicato pubblicamente senza il router che inoltra il traffico sulla porta 80 al tuo Host, credo che questo sia considerato una buona pratica. È particolarmente necessario se è necessario controllare quali progetti sono disponibili per i dispositivi sulla LAN. 

  3. Promemoria: la macchina host deve essere configurata per utilizzare un indirizzo IP statico Anziché essere assegnato da un DHCP del router. Dato che stiamo modificando il file hosts di altri dispositivi per indicare l'IP del server, Non vogliamo che cambi.

* Sto includendo questo perché è comune avere restrizioni di accesso su un server di sviluppo locale e sarà necessario renderlo specificamente disponibile alla rete locale.

2
iyrin

Devi modificare il file hosts sul computer da cui stai cercando di visualizzare la pagina.

Quindi è necessario aggiungerli al file hosts sull'altra macchina LAN.

0
Gabriel Baker