Як підключитися до цього localhost з іншого комп’ютера в тій же мережі?


171

Зараз я працюю над проектом, і я хотів би перевірити його на двох ноутбуках вдома, де один ноутбук підключається до localhost, а інший. Я використовую XAMPP. Як це зробити?

Відповіді:


283

Це однозначно можливо. Ми візьмемо тут загальний випадок з Apache.

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

Загальний ескіз:

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


1 Налаштування віртуального хоста :

Спочатку потрібно встановити віртуальний хост у httpd-vhosts.confфайлі apache . На 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насправді означає, вам потрібно відредагувати файл хостів на своєму комп’ютері. Щоразу, коли ви вводите URL-адресу у своєму браузері, ваш комп'ютер намагається зрозуміти, що це означає! symfony.localне означає нічого для комп'ютера. Тож воно спробує дозволити ім'я symfony.localдо IP-адреси. Зробимо це, спершу заглянувши у файл хостів на комп’ютері, щоб побачити, чи може він відповідати 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 на цьому комп’ютері, ваш комп'ютер буде використовувати інтерфейс зворотного зв'язку для підключення до 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 Відредагуйте файл хостів на комп’ютері, з якого ви намагаєтесь отримати доступ до веб-сайту. :

Знову ж таки, на 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% безкоштовне рішення. Деякі люди також можуть використовувати Чарльза як проксі-сервер, але це 50 $.

В Linux ви можете адаптувати Mac OS вище, використовуючи Squid як проксі-сервер.

У Windows це можна зробити за допомогою Fiddler . Рішення описано в наступному дописі: Моніторинг трафіку iPhone за допомогою Fiddler


Редагувати 23.11.2017: Ей, я не хочу змінювати файл хостів

@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-сервери 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.

Я дозволяю вам пограти з цим і насолоджуватися їздою. Ці 2 кроки - основні вказівки, тому вам доведеться налагоджувати і витрачати кілька годин, якщо це буде перший раз. Скажімо, це трохи більш просунута мережа, є первинний DNS-сервер, вторинні DNS-сервери тощо . Удачі!


Приємна відповідь. Я дотримувався останньої частини, поки не потрапив до "Моніторинг трафіку iPhone з Fiddler". Він вказує на домашню сторінку Fiddler. Це повинно бути за посиланням: conceptdev.blogspot.com/2009/01 / ...
helpse

Я змінив хост-файл, але проблема полягає в тому, що у мене також працює IIS-сервер, тому мій "localhost" або "127.0.0.1" вказує на IIS-сервер, як я можу його замінити на xamp-сервер?
Узаїр Алі

1
@Виберіть будь-який можливий спосіб отримати доступ до веб-сайту з іншого комп’ютера, не редагуючи hostфайл вручну? скажімо, у мене є 100 комп’ютерів, які хочуть зайти на веб-сайт
Дренил

1
@Dre Так, вам доведеться змінити свою мережу, щоб кожна машина знала, де розміщується ваш веб-сайт. Я додав інформацію в кінці відповіді. Сподіваюся, що це допомагає.
Мік

1
Відмінне пояснення!
Вівчарка

25

Для тестування на обох ноутбуках в одному і тому ж бездротовому мережі та в Інтернеті ви можете скористатися такою послугою, як http://localhost.run/ або https://ngrok.com/


3
localhost.run працював як шарм. Мій сервер працював на порту 8000 і щойно змінив командний рядок з 80 на 8000.
Ісуру

3
Оце Так! дивовижно ... це справді спрацювало за один раз ... дякую @tommyvn
Jabongg

Шлях простіше налаштувати NGROK, ніж оновити файл локальних хостів. +1
BlackHatSamurai

Просте рішення для швидкого тестування
Шаміла

15

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

Потім на машині, з якою ви хочете підключитися, використовуйте http:// + the IP of the target machine.

Це повинно це робити.


3
Це може спрацювати, якщо порт 80 є портом програми (зазвичай це є), але майте на увазі, що ми можемо використовувати інший порт. Це означатиме http: // + IP цільової машини + ": PORT_NUMBER"
ggderas

Це було просте рішення, яке я шукав. @Codrin Eugeniu: Будь ласка, врахуйте, щоб включити пропозицію ": PORT_NUMBER" у свою відповідь, як згадував ggderas. Для мене це було потрібно, коли я підключився через порт 8088 за допомогою Apache Superset.
Охумеронен

8

У Mac OS X:

  1. У терміналі запустіть, ifconfig | grep 192.щоб отримати внутрішній IP вашої машини в поточній мережі. Це може бути щось на кшталт192.168.1.140

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

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


6

Цей інструмент багато врятував мене, оскільки у мене немає дозволу адміністратора на моїй машині і вже було встановлено nodejs. Чомусь конфігурація в моїй мережі не дає мені доступу до інших машин, які просто вказують 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/


Я запускаю веб-сторінку на localhost: 3000. Я використовував browser-sync start --proxy localhost:3000в окремій оболонці. На іншому пристрої, підключеному до мережі, я набираю: ${computerIP}:3000але нічого не бачу. Я думаю, є щось більше, що я повинен надати.
Бен Карп

5

можливо, ваші брандмауери заважають вам отримати доступ до веб-сервера localhost.
Якщо потрібно, поставте IP-адреси обох комп'ютерних мереж безпеки антивірусу вашого комп'ютера як безпечні IP-адреси.
Як знайти IP-адресу ПК на Windows: Пуск> (Запуск) введіть: cmd (Введіть)
(Це відкриває командний рядок чорного поля)
введіть в 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 тощо).

Якщо це не спрацює, спробуйте надіслати на ПК свій ноутбук:
Відкрийте команду propmt на своєму ноутбуці: Пуск> cmd (Enter)
ping 192.168.1.3 (Enter)
Якщо пінгінг не працює, то брандмауери блокують ваше з'єднання або вашу мережу. кабель несправний. Перезавантажте свій модем або мережевий комутатор та свої машини.
Закрийте такі програми, як програми чату, які використовують ваші порти.
Ви також можете спробувати інший номер порту: http: 192.168.0.3: 80 або http: 192.168.0.3: 81 або будь-яке випадкове число в кінці


1
Дякую tou @KarlosFontana - ти щойно відповів на моє запитання. У мене виникли проблеми з підключенням iPhone до сервера, який я написав на робочому столі. IPhone був підключений до WiFi мого ПК. Ваш останній рядок відповів на моє запитання :-)
Tommy

4

Це побічна примітка, якщо досі не можете отримати доступ до localhost з інших пристроїв, виконуючи наступний крок. Це може бути пов’язано з тим, що 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  

0

Якщо ви перебуваєте в ОС Windows, використовуйте ipconfig, щоб отримати локальну адресу IPv4, а потім вкажіть це у вашому файлі конфігурації Apache: httpd.conf , наприклад:

Listen: 10.20.30.40:80

Перезавантажте сервер Apache і протестуйте його з іншого комп'ютера в мережі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.