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

  • Я использую Windows 7 с сервером Wamp 2.2.
  • Я настроил 2 виртуальных хоста: www.project1.com и www.project2.com.
  • Я изменил "hosts", 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 через локальную сеть.)


person jatin3893    schedule 28.06.2012    source источник
comment
Я новичок во всем этом, и у меня есть еще несколько вопросов. 1. Подходит ли мой приведенный выше код для того, чего я хочу достичь? @Gabriel - с приведенным выше кодом и вашим предложением изменить файл hosts другого компьютера он открывает страницу wamp по умолчанию при вводе www.project1.com   -  person jatin3893    schedule 05.07.2012
comment
Да, это нормальный способ сделать это. Вы также можете настроить несколько параметров ServerAlias, если хотите, например, объединить это с динамическими службами DNS.   -  person dmp    schedule 05.07.2012
comment
просто обратитесь по этой ссылке несколько виртуальных хостов не работают в Windows"> stackoverflow.com/questions/2530418/ я отвечаю за это...   -  person    schedule 25.07.2013


Ответы (5)


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

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

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

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

192.168.1.70     www.project1.com

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

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

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

person dmp    schedule 05.07.2012
comment
Как вы можете сделать так, чтобы вы могли использовать ipaddress/virtualhostname с любого компьютера в локальной сети, не редактируя хосты гостевых компьютеров? - person dibs; 07.03.2014
comment
Что, если вы хотите проверить это, например, с iPhone? Есть ли другой способ, кроме изменения файла hosts? - person Victor; 16.08.2017
comment
Это работает, когда я хочу получить доступ к записи localhost vhost серверной машины, как получить доступ к project1 и project2 параллельно с клиентской машины в сети? - person Nirav Madariya; 16.03.2018

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

  1. Отредактируйте файл httpd.conf сервера по адресу:

    \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. Отредактируйте файл httpd-vhosts.conf по адресу:

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

    Измените тег "Виртуальный хост" на порт 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
    
person EdC    schedule 04.02.2015
comment
Отлично, я бы просто добавил, что в Windows вам может понадобиться открыть порт 81 для wamp (входящие правила) в брандмауэре. - person Alexandre Nucera; 10.06.2015
comment
Я также придерживаюсь портов. Если бы только был способ сделать машину Windows известной в локальной сети под именами серверов (либо в настройках DNS какого-либо маршрутизатора, либо в другом месте), было бы намного элегантнее... - person Frank Nocke; 16.11.2015
comment
Красивое решение для всех устройств. Убийственное решение :) Протестировано и доказано. Спасибо - person ColinWa; 02.03.2017
comment
Лучшее решение. Но на шаге 2 я не изменил, а добавил виртуальный хост с тем же именем и путем, но с портом 81. В противном случае имя сервера не работало на локальном ПК. - person krolovolk; 19.11.2018
comment
Это не работает, если я хочу разместить несколько приложений в htdocs. Есть ли способ получить доступ к myapp.test на другом ПК в моей сети? - person Ingus; 07.03.2019

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

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

person Jason Yeung    schedule 23.02.2014

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

  1. #P2# <блочная цитата> #P3#
  2. Поскольку мы говорим о размещении веб-сайта в локальной сети, давайте установим требование * принимать подключения только с IP-адресов в вашей локальной сети. Например, на обычном маршрутизаторе Linksys IP-адрес по умолчанию, назначенный каждому устройству в сети, находится в диапазоне от 192.168.1.100 до 192.168.1.255. Вы можете разрешить подключение со всех устройств в локальной сети с 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-адрес сервера, мы не хотим, чтобы он менялся.

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

person iyrin    schedule 22.03.2017

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

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

person Gabriel Baker    schedule 28.06.2012
comment
с приведенным выше кодом и вашим предложением изменить файл hosts другого компьютера, он открывает страницу wamp по умолчанию при вводе www.project1.com. Как я могу перейти на индексную страницу www.project1.com? - person jatin3893; 05.07.2012