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

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

Ответ 1

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

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

Общий эскиз:

enter image description here


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/ в качестве корня моего веб-сайта.

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 Настроить файл хостов:

Чтобы клиент (ваш браузер в этом случае) понял, что означает 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;

Hosts file

##
# 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, чтобы красиво видеть ваш сайт на разных компьютерах! Обратите внимание, что вы можете применить ту же стратегию, если вы являетесь пользователем OSX, чтобы протестировать свой веб-сайт в Internet Explorer через Virtual Box (если вы не хотите использовать компьютер с Windows). Это прекрасно объяснено в Создание тестовой среды Windows/IE на OSX.


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

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

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

На Mac я бы рекомендовал: Тестирование веб-сайта Mac OS X с использованием локального имени хоста на мобильном устройстве: Использование SquidMan в качестве прокси. Это 100% бесплатное решение. Некоторые люди также могут использовать Charles в качестве прокси-сервера, но это 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, на которой есть ваш сайт. Мы назовем эту машину pompei.

$ echo $HOSTNAME
pompei

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

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

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

Step 1: DNS Server

Настройка DNS-сервера в вашей сети. Пусть это будет на pompei для удобства и используйте что-то вроде 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.

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

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

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

Step 2: Firewall

Чтобы работать, pompei должен разрешать входящие и исходящие пакеты "домена", которые идут от и до порта 53. Конечно! Это DNS-пакеты, и если pompei не позволяет их, у вас вообще не будет доступа к вашему DNS-серверу. Идем дальше и открываем этот порт 53. В linux вы классически используете 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

Step 3: Router

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

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

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

Ответ 2

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

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

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

Ответ 3

возможно, что ваши брандмауэры не позволяют вам получить доступ к веб-серверу localhost.
Поместите IP-адреса безопасности интернет-безопасности вашей интернет-безопасности в безопасные IP-адреса, если это необходимо.
Как найти IP-адрес вашего ПК с Windows: Пуск > (Выполнить) введите: cmd (Enter)
(Это открывает командную строку черного окна)
введите 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 или любое случайное число в конце

Ответ 4

Этот инструмент меня очень сильно сэкономил, так как у меня нет прав администратора на моей машине и уже установлены узлы. По какой-то причине конфигурация в моей сети не дает мне доступа к другим машинам, просто указывая 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/

Ответ 5

Это побочная заметка, если по-прежнему не удается получить доступ к локальному хосту с других устройств после выполнения описанного выше шага. Это может быть связано с тем, что 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  

Ответ 6

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

Ответ 7

В Mac OS X:

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

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

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