Доступ к виртуальному хосту с другой машины через LAN

  • я использую Windows 7 с сервером WAMP 2.2.
  • у меня есть настройка 2 виртуальных хостов:www.project1.com и www.project2.com.
  • я изменил "хозяева", на httpd.conf и httpd-vhosts.conf файлы, к изменениям, которые я упомянул ниже.

используя мой браузер, когда я набираю www.project1.com или www.project2.com, Я успешно открываю свои веб-страницы на ноутбуке, на котором установлен сервер на.

изменения в "hosts файл": я приложил к концу файла следующее: -

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

изменения httpd.conf файл:-

Include conf/extra/httpd-vhosts.conf

изменения 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>


Теперь; так как я могу открыть эти веб-страницы из браузера в PC_1 (С сервера), как я могу получить доступ к этим веб-страницы из браузера в PC_2? (Я имею в виду любой компьютер, подключенный к PC_1 через LAN.)

5 ответов


в директиве virtualhost измените 127.0.0.1 to *:80 и, как упоминал Габриэль, добавьте запись в файл hosts на другой машине, добавив свой домен, который будет связан с IP-адресом вашего сервера.

когда вы помещаете явный IP в директиву, apache будет слушать только этот IP - адрес, но подстановочный знак сообщит ему привязку ко всем IP-адресам, доступным для него.

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

если ваш сервер находится на 192.168.1.70, например, то на других машинах в вашей локальной сети запись хостов будет выглядеть так:

192.168.1.70     www.project1.com

перезапустите apache, и он должен работать нормально.

как Примечание, когда вы используете virtualhosts, apache будет использовать первое определение по умолчанию, когда он не может сделать соответствие между доменом, переданным в заголовке HTTP-запроса, и настройкой сайтов в конфигурации, поэтому ваша страница по умолчанию появлялась.

вы сказали apache привязаться ко всем IPs с NameVirtualHost *:80 директива, но затем не настроил сайт для этого внешний IP. Надеюсь, это поможет!


в дополнение к ответу danp вы можете получить доступ к виртуальному хосту без необходимости изменять файл etc/hosts клиентской машины путем назначения порта виртуальному хосту. Это идеальный вариант, если вы хотите получить доступ к серверу с мобильного или планшетного устройства:

  1. редактирование сервера в:

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

    Поиск "Listen" (по линии 61). Вы должны увидеть следующее, что позволяет Apache прослушивать порт 80:

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

    добавьте следующие строки, чтобы добавить прослушивание порта 81 (или любой порт):

    Listen 0.0.0.0:81
    Listen [::0]:81
    
  2. редактировать в:

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

    изменить "Виртуальный Хост" tag to port 81:

    <VirtualHost *:81>
        DocumentRoot "D:/websites/project1/"
        ServerName www.project1.com
    </VirtualHost>
    
  3. перезапустите сервер Apache.

  4. на клиентском компьютере/планшете/мобильном телефоне в веб-браузере введите IP-адрес сервера (192.168.0.10, или что IP), за которым следует номер порта в следующем формате:

    http://192.168.0.10:81
    

в локальной сети есть два компьютера.

Настройка компьютера(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>

B Настройка компьютера(c:/windows/system32/drives/etc/hosts):

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

B доступ A, мой проект работает.


несколько обновленных точек для рассмотрения выбранного ответа:

  1. NameVirtualHost больше не используется после версии Apache 2.3.11 и может быть опущено.

    в 2.3.11 и позже, в любое время комбинация IP-адреса и порта используется в нескольких виртуальных хостах, виртуальный хостинг на основе имен автоматически включен для этого адреса.

  2. потому что мы говорим о хостинге сайта над LAN, давайте установим требование* принимать соединения только с IP-адресов локальная сеть. Например, на общем маршрутизаторе Linksys по умолчанию IP, назначенный каждому устройству в сети, находится между 192.168.1.100 до 192.168.1.255. Вы можете разрешить подключение со всех устройств на LAN с IP-адресом 192.168.1.XXX с помощью Require ip 192.168.1 (обратите внимание, что последний октет остается вне IP, чтобы позволить всему диапазон.)

    Это позволяет настроить доступ для каждого проекта, чтобы можно было быть доступно по локальной сети, а другое доступно только локально.

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

    хотя ваш сайт не будет обслуживаться публично без маршрутизатора, перенаправляющего трафик на порт 80 на ваш хост, я считаю, что это считается лучшей практикой. Это особенно необходимо, если вам нужно контролировать, какие проекты доступны для устройств в локальной сети.

  3. напоминание: ваш хост-компьютер должен быть настроен на использование статического IP-адреса вместо того, чтобы назначаться одним из ваших DHCP-сервер роутера. Так как мы редактирование файла hosts других устройств для указания IP сервера, мы не хотим, чтобы это изменить.

* я включаю это, потому что обычно есть ограничения доступа на локальном сервере разработки, и вам нужно будет специально сделать его доступным для вашей локальной сети.


вам нужно изменить файл hosts на компьютере, который вы пытаетесь просмотреть страницу.

поэтому вам нужно добавить их в файл hosts на другом компьютере lan.