Подтвердить что ты не робот

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

  • Я использую 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.)
4b9b3361

Ответ 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 на другом компьютере.