Доступ к виртуальному хосту с другой машины через 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 клиентской машины путем назначения порта виртуальному хосту. Это идеальный вариант, если вы хотите получить доступ к серверу с мобильного или планшетного устройства:
-
редактирование сервера в:
\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
-
редактировать в:
\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>
перезапустите сервер Apache.
-
на клиентском компьютере/планшете/мобильном телефоне в веб-браузере введите 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, мой проект работает.
несколько обновленных точек для рассмотрения выбранного ответа:
-
NameVirtualHost
больше не используется после версии Apache 2.3.11 и может быть опущено.в 2.3.11 и позже, в любое время комбинация IP-адреса и порта используется в нескольких виртуальных хостах, виртуальный хостинг на основе имен автоматически включен для этого адреса.
-
потому что мы говорим о хостинге сайта над 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 на ваш хост, я считаю, что это считается лучшей практикой. Это особенно необходимо, если вам нужно контролировать, какие проекты доступны для устройств в локальной сети.
напоминание: ваш хост-компьютер должен быть настроен на использование статического IP-адреса вместо того, чтобы назначаться одним из ваших DHCP-сервер роутера. Так как мы редактирование файла hosts других устройств для указания IP сервера, мы не хотим, чтобы это изменить.
* я включаю это, потому что обычно есть ограничения доступа на локальном сервере разработки, и вам нужно будет специально сделать его доступным для вашей локальной сети.
вам нужно изменить файл hosts на компьютере, который вы пытаетесь просмотреть страницу.
поэтому вам нужно добавить их в файл hosts на другом компьютере lan.