web-dev-qa-db-fra.com

Accéder à l'hôte virtuel à partir d'une autre machine sur un réseau local

  • J'utilise Windows 7 avec le serveur Wamp 2.2. 
  • J'ai configuré 2 hôtes virtuels: www.project1.com et www.project2.com
  • J'ai modifié les "hôtes", les fichiers httpd.conf et le httpd-vhosts.conf en les modifications que j'ai mentionnées ci-dessous. 

À l'aide de mon navigateur, lorsque je tape www.project1.com ou www.project2.com, les pages Web sont ouvertes sur l'ordinateur portable sur lequel le serveur est installé. 

Modifications dans le fichier "hosts": J'ai ajouté les éléments suivants à la fin du fichier: -

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

Changements dans le fichier httpd.conf: -

Include conf/extra/httpd-vhosts.conf

Modifications dans le fichier 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>


À présent; Étant donné que je peux ouvrir ces pages Web à partir d'un navigateur dans PC_1 (celui avec le serveur), comment puis-je accéder à ces pages Web à partir d'un navigateur dans PC_2? (Je veux dire n'importe quel PC connecté à PC_1 via un réseau local.)

26
jatin3893

Dans votre directive virtualhost, remplacez 127.0.0.1 par *:80 et, comme l'a mentionné Gabriel, ajoutez une entrée au fichier hosts de l'autre machine, en ajoutant votre domaine à associer à l'IP de votre serveur.

Lorsque vous insérez une adresse IP explicite dans la directive, Apache n'écoute que sur cette adresse IP, mais le caractère générique indique qu'elle se lie à toutes les adresses IP disponibles.

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

Si votre serveur est sur 192.168.1.70 par exemple, l'entrée des hôtes sur les autres ordinateurs de votre réseau ressemblera à ceci:

192.168.1.70     www.project1.com

Redémarrez Apache et cela devrait fonctionner correctement. 

En remarque, lorsque vous utilisez virtualhosts, Apache utilise la première définition comme valeur par défaut lorsqu'il ne peut pas faire correspondre le domaine passé dans l'en-tête de la requête HTTP et la configuration des sites dans la configuration. la page apparaissait. 

Vous avez dit à Apache de se lier à toutes les adresses IP avec la directive NameVirtualHost *:80, mais vous n'avez pas configuré de site pour cette adresse IP externe. J'espère que cela pourra aider!

22
dmp

Outre la réponse de danp, vous pouvez accéder à l'hôte virtuel sans avoir à modifier le fichier etc/hosts de la machine cliente en attribuant un port à l'hôte virtuel . Ceci est idéal si vous souhaitez accéder au serveur avec un appareil mobile ou une tablette:

  1. Editez le fichier httpd.conf du serveur à:

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

    Recherchez "Listen" (autour de la ligne 61). Vous devriez voir ce qui suit qui permet à Apache d’écouter le port 80:

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

    Ajoutez les lignes suivantes pour ajouter une écoute pour le port 81 (ou n’importe quel port):

    Listen 0.0.0.0:81
    Listen [::0]:81
    
  2. Editez le fichier httpd-vhosts.conf à:

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

    Changez votre "Hôte virtuel" tag en port 81:

    <VirtualHost *:81>
        DocumentRoot "D:/websites/project1/"
        ServerName www.project1.com
    </VirtualHost>
    
  3. Redémarrez le serveur Apache.

  4. Sur la machine cliente/tablette/mobile, sur le navigateur Web, entrez l'adresse IP du serveur (192.168.0.10, ou une adresse IP quelconque) suivie du numéro de port au format suivant:

    http://192.168.0.10:81
    
20
EdC

Il y a deux ordinateurs dans le réseau local.

Un ordinateur (192.168.1.70) Configuration (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>

Configuration de l'ordinateur B (c:/windows/system32/drives/etc/hosts):

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

B accès A, mon projet fonctionne.

5
W.F. Yang

Quelques points mis à jour à prendre en compte pour la réponse sélectionnée:

  1. NameVirtualHost n'est plus utilisé après la version d'Apache 2.3.11 et peut être omis.

    Dans 2.3.11 et les versions ultérieures, une combinaison adresse IP/port est à tout moment utilisé dans plusieurs hôtes virtuels, l'hébergement virtuel basé sur le nom est activé automatiquement pour cette adresse.

  2. Puisque nous parlons d’hébergement d’un site Web sur un réseau local, définissons une exigence * Pour accepter uniquement les connexions provenant d’adresses IP sur votre réseau local Par exemple, sur un routeur Linksys commun, l’adresse IP par défaut attribuée à chaque périphérique du réseau est comprise entre 192.168.1.100.__ et 192.168.1.255. Vous pouvez autoriser la connexion de tous les périphériques du réseau Avec une adresse IP 192.168.1.XXX en utilisant Require ip 192.168.1

    Cela vous permet de configurer l’accès par projet afin qu’il soit disponible sur le réseau local et que l’autre n’est disponible que localement.

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

    Bien que votre site ne soit pas desservi publiquement sans que le routeur transfère le trafic sur le port 80 à votre hôte, je pense que cela est considéré comme une pratique recommandée. Cela est particulièrement nécessaire si vous devez contrôler quels projets sont disponibles pour les périphériques sur le réseau local. 

  3. Rappel: votre ordinateur hôte doit être configuré pour utiliser une adresse IP statique Au lieu d’en attribuer une par le routeur DHCP de votre routeur. Comme nous sommes en train de modifier le fichier hosts d’autres périphériques pour pointer vers l’IP du serveur, nous ne voulons pas que cela change.

* J'inclus ceci car il est courant d'avoir des restrictions d'accès sur un serveur de développement local et vous devrez le rendre spécifiquement disponible sur votre réseau local.

2
iyrin

Vous devez modifier le fichier hosts sur la machine à partir de laquelle vous essayez d'afficher la page.

Vous devez donc les ajouter au fichier hosts sur l’autre machine LAN.

0
Gabriel Baker