Доступ к виртуальному хосту с другого компьютера через локальную сеть
- Я использую 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
через LAN.)
Ответы
Ответ 1
В вашей директиве virtualhost измените 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, например, то на других компьютерах вашего сервера запись хозяина будет выглядеть так:
192.168.1.70 www.project1.com
Перезапустите apache, и он должен работать нормально.
В качестве примечания, когда вы используете virtualhosts, apache будет использовать первое определение как значение по умолчанию, если оно не может сделать совпадение между доменом, переданным в заголовке HTTP-запроса, и сайтами, настроенными в config, что почему появилась ваша страница по умолчанию.
Вы сказали, что apache связывается со всеми IP-адресами с директивой NameVirtualHost *:80
, но затем не настроил сайт для этого внешнего IP-адреса. Надеюсь, что это поможет!
Ответ 2
В дополнение к ответу danp вы можете получить доступ к виртуальному хосту без необходимости изменять файл клиентской машины etc/hosts, назначив порт виртуальному хосту. Это идеально, если вы хотите получить доступ к серверу с помощью мобильного устройства или планшета:
-
Изменить сервер 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
-
Отредактируйте файл 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>
-
Перезапустите сервер Apache.
-
На клиентском компьютере/планшете/мобильном устройстве в веб-браузере введите IP-адрес сервера (192.168.0.10
или любой другой IP-адрес), а затем номер порта в следующем формате:
http://192.168.0.10:81
Ответ 3
В локальной сети есть два компьютера.
Компьютер (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, Мой проект работает.
Ответ 4
Несколько обновленных точек для ответа на выбранный ответ:
-
NameVirtualHost
больше не используется после версии Apache
2.3.11 и может быть опущен.
В 2.3.11 и более поздних версиях каждый раз, когда IP-адрес и комбинация портов используемый на нескольких виртуальных хостах, виртуальный хостинг на основе имен автоматически активируется для этого адреса.
-
Поскольку мы говорим о размещении веб-сайта по локальной сети, позвольте установить
требование * принимать только соединения с 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-маршрутизатором. Поскольку мы
редактируя файл хостов других устройств, указывая на IP-адрес сервера,
мы не хотим, чтобы он менялся.
* Я включаю это, потому что обычно существует ограничение доступа на локальном сервере разработки, и вам нужно будет сделать его доступным для вашей локальной сети.
Ответ 5
Вам нужно изменить файл hosts на машине, с которой вы пытаетесь просмотреть страницу.
Итак, вам нужно добавить их в файл hosts на другом компьютере.