Как получить доступ к локальному веб-серверу на моем ноутбуке с другого компьютера? [закрыто]

37

У меня на компьютере запущено приложение 127.0.0.1:3000

Я хотел бы получить доступ к этому приложению с iPhone, подключенного к той же сети. Я делал это раньше, но скрывал, как я это сделал. Любые идеи?

Тони
источник
2
попробуйте rails server -b 0.0.0.0, а затем браузер это на вашем iPhone.
zx1986

Ответы:

37

Сначала вам нужно определить IP-адрес или имя компьютера, на котором вы запускаете веб-сервер. Я предполагаю, что вы запускаете веб-сервер на Mac, так как вы пометили свой пост, macosxхотя инструкции похожи на машины Linux. Итак, на вашем Mac:

  • Open Terminal.app. Это под Applications->Utilities.
  • Запустите ifconfigв терминале. Это показывает вам все сетевые интерфейсы на машине. Одним из них является сеть, к которой ваша машина активно подключена. Если у вас Mac подключен по проводной сети, это должно быть en0. Запишите адрес после inet- это должен быть адрес, используемый вашей машиной.
    • Предположим, вы обнаружили, что это 192.168.10.1.
  • Убедитесь, что вы можете подключиться к этому адресу с вашего сервера с помощью nc -v 192.168.10.1 3000.
    • Вы должны увидеть сообщение, как Connection to 192.168.10.1 3000 port [tcp/http] succeeded!.
    • Если это не сработает, см. Ниже.
    • Если это работает, нажмите, ctrl-Cчтобы выйти из сеанса nc.
  • Теперь попробуйте подключиться на вашем клиентском компьютере.
    • Если это веб-приложение, вы сможете подключиться через браузер
    • Например, попробуйте http://192.168.10.1:3000

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

Фил Холленбек
источник
10x приятель ... какая разница, когда речь идет о системе на базе Windows с Wamp-сервером на нем ... есть ли разница?
Sagive SEO
Я использую Mac Sierra. Я могу получить доступ к серверу с моего компьютера Mac (на котором работает сервер) через 10.55.18.22:3000, но не могу получить к нему доступ с другого компьютера, даже если оба находятся в одной сети. Опция веб-обмена недоступна в Sierra. Как мы можем сделать эту работу?
Сантош Кумар
saanthosh: посмотрите на переадресацию портов на вашем роутере. Именно этим я и занимался до того, как обнаружил функцию общего доступа к Интернету в OSX (которая, по-видимому, была доступна по крайней мере с OSX 10.6). Я проводил тестирование локального хоста на множестве мобильных устройств в той же комнате / сети, где находился мой компьютер с OSX, что стало возможным благодаря стандартным / небольшим изменениям конфигурации маршрутизатора (т. Е. Переадресации портов). Другие статьи и темы SO содержат информацию о конфигурации маршрутизатора. В конечном счете, я нахожусь в новом месте и не имею доступа к маршрутизатору, поэтому вместо этого я использую общий доступ к Интернету через OSX (High Sierra), чтобы добиться того же.
MarsAndBack
12

Найдите имя вашего Mac с помощью hostname(в окне терминала) и используйте его в своем URL. Например, http: //Tonys-iMac.local: 3000 /

Если по какой-то причине Bonjour не работает в вашей среде, найдите адрес Аэропорта на iMac или MacBook с

ipconfig getifaddr en1

или вообще с

ipconfig getifaddr $(route -n get default|awk '/interface/ { print $2 }')

Джеймс
источник
Этот ответ имеет несколько хороших оптимизаций относительно моего имени хоста и IP-адреса.
Фил Холленбек
2
почему Bonjour не работает? Я нахожу мое имя хоста gm20152.local. Но когда я пытаюсь gm20152.local: 3000 на той же машине, он открывает действительную страницу. Но когда я пытаюсь запустить gm20152.local: 3000 на моем телефоне с Android, браузер на моем телефоне не может найти хост. Я думаю, это потому, что у моего телефона нет способа сопоставления gm20152.local с ip addr моего macbook. Как я могу сделать это?
gprasant
@gprasant Настройка Android на Bonjour кажется довольно сложной
Джеймс
5

По сути, в настройках брандмауэра вы можете разрешить определенному приложению (например, ruby) принимать входящие соединения. Кроме того, чтобы разрешить доступ к внешнему миру (например, www), вам необходимо перенаправить трафик на ваш внутренний шлюз: порт через настройки маршрутизатора.

Вот как это сделать:

  1. Mac-> Sys Preferences-> Sharing-> Включить флажок «Общий веб-доступ»
  2. Mac-> Sys Preferences-> Security-> разрешить вашему приложению (например, ruby) принимать входящее соединение
  3. Откройте порт на маршрутизаторе (через 192.168.1.1) для пересылки трафика с your_web_ip: порт на local_gateway: порт

    1. Например, из настроек маршрутизатора моего Verizon -> Переадресация портов -> создать правило: пересылка на локальный шлюз (например, 192.168.1.4), пользовательский порт, протокол tcp, источник = любой, пункт назначения = 3280, все типы соединений, пересылка на порт = 3000.

Выполнено. Теперь с удаленного компьютера откройте в браузере свой IP-адрес (найдите через http://www.whatismyip.com/ ) + порт назначения № выше, например, 72.189.194.65:3280, он будет подключен к вашему локальному 192.168.1.4. : 3000

Примечание: я работаю на Mac OSX 10.7.5

Чейз Т.
источник
2

127.0.0.1 - это локальный адрес, который каждый компьютер имеет для себя. Вы должны выяснить, каков реальный IP-адрес (или имя хоста / имени Bonjour) машины. Перейдите в «Системные настройки», «Сеть» и найдите IP-адрес устройства, либо для порта Ethernet, если вы используете кабель, либо в аэропорту, если вы используете WLAN. Затем откройте этот адрес вместе с: 3000 часть в Safari на iPhone.

Свен
источник
Кроме того, на панели настроек общего доступа всегда отображается имя или адрес, по которым можно связаться с вашим компьютером.
Джеймс
2

Если приложение прослушивает только 127.0.0.1:3000, вы не сможете получить к нему доступ с другого компьютера. Для этого вам нужно изменить конфигурацию, чтобы прослушивать IP или 0.0.0.0 (все доступные интерфейсы). Это первый вариант.

Второй вариант - использовать прокси.

Третий вариант - если вы можете использовать ssh с iphone, вы также можете использовать ssh forwarding.

ssh user @ host -L 3000: 127.0.0.1: 3000

Затем на вашем iPhone откройте 127.0.0.1:3000

Самир
источник
1
AFAIK, вы не можете делать переадресацию ssh-портов на iPhone. Нет, если он не взломан в любом случае.
Свен
Послушай 0.0.0.0! Как я мог не думать об этом?
Густаво Штраубе