Как подключиться к этому локальному хосту с другого компьютера в той же сети?

В настоящее время я работаю над проектом, и я бы хотел проверить его на двух ноутбуках дома, где один ноутбук подключается к локальному хосту с другой. Я использую XAMPP. Как мне это сделать?

Это определенно возможно. Мы рассмотрим общий пример с Apache.

Допустим, вы большой фанат Symfony2, и вы хотели бы получить доступ к своему сайту symfony по адресу http://symfony.local/ с 4-х разных компьютеров (на главной из которых размещен ваш веб-сайт, а также Mac, Windows и Linux (беспроводной или нет) на главный компьютер.

Общий эскиз:

введите описание изображения здесь


1 Настройте виртуальный хост :

Сначала вам нужно настроить виртуальный хост в файле apache httpd-vhosts.conf . В XAMP вы можете найти этот файл здесь: C:\xampp\apache\conf\extra\httpd-vhosts.conf . В MAMP вы можете найти этот файл здесь: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf . Этот шаг подготавливает веб-сервер на вашем компьютере для обработки запросов symfony.local . Вам необходимо указать имя виртуального хоста, а также корневую / основную папку вашего сайта. Для этого добавьте следующую строку в конец этого файла. Вам необходимо изменить DocumentRoot везде, где находится ваша основная папка. Здесь я взял /Applications/MAMP/htdocs/Symfony/ в качестве корня моего сайта.

  DocumentRoot "/Applications/MAMP/htdocs/Symfony/" ServerName symfony.local  

2 Настройте свой файл hosts :

Для того, чтобы клиент (ваш браузер в этом случае) понял, что означает symfony.local , вам нужно отредактировать файл hosts на вашем компьютере. Каждый раз, когда вы вводите URL-адрес в своем браузере, ваш компьютер пытается понять, что это значит! symfony.local ничего не значит для компьютера. Поэтому он попытается решить имя symfony.local на IP-адрес. Он будет делать это, сначала просмотрев файл hosts на вашем компьютере, чтобы узнать, может ли он соответствовать IP-адресу тому, что вы ввели в адресной строке. Если он не может, он будет запрашивать DNS-серверы . Трюк здесь заключается в добавлении следующего файла вашего хоста.

  • В MAC этот файл находится в /private/etc/hosts ;
  • В LINUX этот файл находится в /etc/hosts ;
  • В WINDOWS этот файл находится в \Windows\system32\private\etc\hosts ;
  • В WINDOWS 7 этот файл находится в \Windows\system32\drivers\etc\hosts ;
  • В WINDOWS 10 этот файл находится в \Windows\system32\drivers\etc\hosts ;

Файл хостов

 ## # Host Database # localhost is used to configure the loopback interface ## #... 127.0.0.1 symfony.local 

С этого момента каждый раз, когда вы вводите symfony.local на этом компьютере, ваш компьютер будет использовать интерфейс loopback для подключения к symfony.local. Он поймет, что вы хотите работать на localhost (127.0.0.1).

3 Доступ к symfony.local с другого компьютера :

Мы, наконец, приходим к вашему основному вопросу, который:

Как я могу теперь получить доступ к моему сайту через другой компьютер?

Ну, теперь это легко! Нам просто нужно сказать другим компьютерам, как они могут найти symfony.local ! как нам это сделать?

3a Получите IP-адрес компьютера, на котором размещен веб-сайт :

Сначала нам нужно знать IP-адрес компьютера, на котором размещен веб-сайт (тот, с которым мы работаем с самого начала). В терминале на MAC и LINUX введите ifconfig |grep inet , в WINDOWS тип ipconfig . Предположим, что IP-адрес этого компьютера равен 192.168.1.5 .

3b Отредактируйте файл hosts на компьютере, с которого вы пытаетесь получить доступ к веб-сайту. :

Опять же, на MAC этот файл находится в /private/etc/hosts ; на LINUX , в /etc/hosts ; и на WINDOWS , в \Windows\system32\private\etc\hosts (если вы используете WINDOWS 7 , этот файл находится в \Windows\system32\drivers\etc\hosts ). Трюк теперь заключается в использовании IP-адреса компьютера, к которому мы пытаемся обратиться / поговорить:

 ## # Host Database # localhost is used to configure the loopback interface ## #... 192.168.1.5 symfony.local 

4 Наконец, наслаждайтесь результатами в своем браузере.

Теперь вы можете войти в свой браузер и набрать http://symfony.local чтобы красиво видеть ваш сайт на разных компьютерах! Обратите внимание, что вы можете применить ту же страtagsю, если вы являетесь пользователем OSX, чтобы протестировать свой веб-сайт в Internet Explorer через Virtual Box (если вы не хотите использовать компьютер с Windows). Это прекрасно объясняется в разделе «Создание тестовой среды Windows / IE» на OSX .


Вы также можете получить доступ к своему локальному хосту с мобильных устройств

Вы можете задаться вопросом, как получить доступ к вашему сайту localhost с мобильного устройства. В некоторых случаях вы не сможете изменить файл хостов (iPhone, iPad …) на своем устройстве (исключение из джейлбрейка).

Ну, тогда решение должно установить прокси-сервер на машине, на которой размещен веб-сайт, и подключиться к этому прокси с вашего iphone. Это на самом деле очень хорошо объясняется в следующих сообщениях и не так уж долго настраивается:

На Mac я бы рекомендовал: Тестирование веб-сайта Mac OS X с использованием локального имени хоста на мобильном устройстве : использование SquidMan в качестве прокси-сервера. Это 100% бесплатное решение. Некоторые люди также могут использовать Чарльз в качестве прокси-сервера, но это 50 $.

В Linux вы можете адаптировать Mac OS выше, используя Squid в качестве прокси-сервера.

В Windows вы можете сделать это с помощью Fiddler . Решение описано в следующем сообщении: Мониторинг трафика iPhone с помощью Fiddler


Редактировать 23/11/2017: Привет, я не хочу изменять файл Hosts

@Dre. Любой возможный способ доступа к веб-сайту с другого компьютера, не отредактировав файл хоста вручную? скажем, у меня есть 100 компьютеров, которые хотели бы получить доступ к веб-сайту

Это интересный вопрос, и поскольку он связан с вопросом ОП, позвольте мне помочь.

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

Давайте притворимся, что у вас есть маршрутизатор (192.168.1.1). Этот маршрутизатор имеет DHCP-сервер и выделяет IP-адреса 100 компьютерам в сети.

Предположим, что у вас есть то же самое, что и выше, в той же сети, на машине 192.168.1.5 которой есть ваш сайт. Мы будем называть это машинным помпеем .

 $ echo $HOSTNAME pompei 

Как и раньше, эта машина помпея на 192.168.1.5 запускает HTTP-сервер, который обслуживает ваш сайт symfony.local .

Для каждой машины, чтобы знать, что symfony.local размещен на помпеях , теперь нам понадобится собственный DNS-сервер в сети, который знает, где находится symfony.local . Затем устройства в сети смогут разрешать имена доменов, обслуживаемые помпеями внутри страны.

3 простых шага.

Шаг 1: DNS-сервер

Настройка DNS-сервера в вашей сети. Давайте сделаем это на помпеях для удобства и используем что-то вроде dnsmasq .

Dnsmasq предоставляет пересылку доменных имен (DNS) , ….

Мы хотим, чтобы pompei запускал DNSmasq для обработки DNS-запросов. Hey, pompei, where is symfony.local и отвечают. Hey, sure think, it is on 192.168.1.5 but don't take my word for it Hey, pompei, where is symfony.local Hey, sure think, it is on 192.168.1.5 but don't take my word for it .

Продолжайте устанавливать dnsmasq, файл конфигурации dnsmasq обычно находится в /etc/dnsmasq.conf зависимости от вашей среды.

Я лично использую server=8.8.8.8 server=8.8.8.4 no-resolv и google server=8.8.8.8 server=8.8.8.4 .

* Примечание: * ВСЕГДА перезапустите DNSmasq при изменении файла / etc / hosts, поскольку никакие изменения не вступят в силу в противном случае.

Шаг 2. Брандмауэр

Чтобы работать, помпеи должны разрешать входящие и исходящие пакеты «домен», которые идут от и до порта 53. Конечно! Это DNS-пакеты, и если pompei не позволяет их, у вас вообще не будет доступа к вашему DNS-серверу. Идем дальше и открываем этот порт 53. В Linux вы бы classически использовали iptables для этого.

Разделяя то, что я придумал, но вам, скорее всего, придется погрузиться в ваш брандмауэр и хорошо все понять.

 # # Allow outbound DNS port 53 # iptables -A INPUT -p tcp --dport 53 -j ACCEPT iptables -A INPUT -p udp --dport 53 -j ACCEPT iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT iptables -A OUTPUT -p udp --dport 53 -j ACCEPT iptables -A INPUT -p udp --sport 53 -j ACCEPT iptables -A INPUT -p tcp --sport 53 -j ACCEPT iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT iptables -A OUTPUT -p udp --sport 53 -j ACCEPT 

Шаг 3: Маршрутизатор

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

Вот и все. Когда вы находитесь на машине и запрашиваете symfony.local , он спросит ваш DNS-сервер, где symfony.local , и как только он получит ответ от DNS-сервера, он отправит соответствующий HTTP-запрос к Помпею по 192.168.1.5 .

Я позволил тебе играть с этим и наслаждаться поездкой. Эти два шага являются основными рекомендациями, поэтому вам придется отлаживать и тратить несколько часов, если вы впервые это сделаете. Допустим, это немного более совершенная сеть, есть первичный DNS-сервер, вторичные DNS-серверы и т . Д. Удачи!

Если обе машины находятся в одной рабочей группе, откройте cmd.exe на компьютере, к которому вы хотите подключиться, введите ipconfig и обратите внимание на IP- IPv4 Address строке IPv4 Address .

Затем на машине, с которой вы хотите установить соединение, используйте http:// + the IP of the target machine .

Это должно сделать это.

Для тестирования на обоих ноутбуках на одной и той же беспроводной сети и через Интернет вы можете использовать сервис, например http://localhost.run/ или https://ngrok.com/

возможно, ваши брандмауэры не позволяют вам получить доступ к веб-серверу localhost.
Поместите IP-адреса безопасности интернет-безопасности ваших компьютеров в качестве безопасных IP-адресов, если это необходимо.
Как найти IP-адрес вашего ПК с Windows: Пуск> (Выполнить) введите: cmd (Enter)
(Это открывает командную строку черного windows)
введите ipconfig (Enter)
Предположим, ваш веб-сервер Apache или IIS установлен на вашем ПК: 192.168.0.3
и вы хотите получить доступ к своему веб-серверу со своим ноутбуком. (IP-адрес ноутбука 192.168.0.5)
На вашем ПК вы вводите: http: // localhost / внутри браузера Firefox или Internet Eplorer для доступа к своим данным на вашем веб-сервере.
На своем ноутбуке вы набираете http://192.168.0.3/ для доступа к своему веб-серверу на своем ПК.

Чтобы все это работало, вам необходимо правильно установить веб-сервер (например, IIS, Apache, XAMP, WAMP и т. Д.).

Если это не сработает, попробуйте выполнить ping ваш компьютер с вашего ноутбука:
Откройте команду propmt на своем ноутбуке: Пуск> cmd (Enter)
ping 192.168.1.3 (Enter)
Если pinging терпит неудачу, тогда брандмауэры блокируют ваше соединение или ваша сетевая кабельная сеть неисправна. Перезапустите модем или сетевой коммутатор и ваши компьютеры.
Закройте программы, такие как чат-программы, которые используют ваши порты.
Вы также можете попробовать номер другого порта: http: 192.168.0.3: 80 или http: 192.168.0.3: 81 или любое случайное число в конце

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

 # Using a local.dev vhost $ browser-sync start --proxy # Using a local.dev vhost with PORT $ browser-sync start --proxy local.dev:8001 # Using a localhost address $ browser-sync start --proxy localhost:8001 # Using a localhost address in a sub-dir $ browser-sync start --proxy localhost:8080/site1 

http://www.browsersync.io/docs/command-line/

Это побочная заметка, если по-прежнему не удается получить доступ к локальному хосту с других устройств после следующего шага выше. Возможно, это связано с тем, что apache ports.conf настроен на локальную работу (127.0.0.1), а не на внешнюю.

проверьте следующее (для ubuntu apache2)

  $ cat /etc/apache2/ports.conf 

если установлено следующее:

 NameVirtualHost *:80 Listen 127.0.0.1:80 

затем измените его на значение по умолчанию

 NameVirtualHost *:80 Listen 80 

В Mac OS X:

  1. В терминале запустите ifconfig | grep 192. ifconfig | grep 192. чтобы получить внутренний IP-адрес вашего компьютера в его текущей сети. Это может быть что-то вроде 192.168.1.140

  2. Запустите сервер. Например, node server.js может запускать сервер на каком-то порту.

  3. На вашем телефоне посетите 192.168.1.140:3000 или любой другой порт, на котором работает ваш сервер.

Если вы находитесь в Windows, используйте ipconfig для получения локального IPv4-адреса, а затем укажите, что в вашем файле конфигурации Apache: httpd.conf , например:

 Listen: 10.20.30.40:80 

Перезагрузите сервер Apache и протестируйте его с другого компьютера в сети.

Давайте будем гением компьютера.