Не удается получить доступ к локальному серверу Sinatra с другого компьютера в той же сети
У меня есть простой сервер Sinatra, который я запускаю через textmate, но я не могу получить доступ с другого компьютера в той же сети.
Я запускаю Ruby 1.9.3p327 и Sinatra 1.4.1 на Mac OS 10.8.3. Брандмауэр отключен.
Я тестировал один и тот же сценарий в разных сетях и компьютерах.
Компьютер реагирует на простые пинги, но когда я пытаюсь подключиться к telnet-порту 4567, я не могу установить соединение.
Ответы
Ответ 1
Недавно была зафиксирована фиксация Sinatra, которая изменила адрес прослушивания по умолчанию на localhost
из 0.0.0.0
в режиме разработки из-за проблем с безопасностью.
Чтобы явно разрешить доступ из сети, вам нужно либо запустить приложение в другом режиме (например, производство), либо установить параметр bind
0.0.0.0
.
Вы можете сделать это из командной строки, используя встроенный сервер, используя опцию -o
:
$ ./my_sinatra_file.rb -o 0.0.0.0
Ответ 2
Убедитесь, что сервер synatra не прослушивает только адрес localhost (127.0.0.1).
Ответ 3
Я читаю немного дополнительной информации, которая может помочь людям вроде меня ударить головой о стену.
Я нахожусь на компьютере с Windows, а не на Mac, и мне пришлось открыть порт, который я использовал (по умолчанию для Sinatra - 4567) для публики (даже если я нахожусь в университетской сети).
Для этого в Windows 10:
- Нажмите клавишу Windows
- Поиск брандмауэра и нажмите enter
- Перейдите к дополнительным настройкам
- Нажмите на входящие правила в левом верхнем углу
- Нажмите новое правило в правом верхнем углу
- Выберите опцию порта
- Введите свой порт (возможно, 4567 для Sinatra)
- Далее
- И теперь выберите из домена/частного/публичного.
Теперь еще одна вещь, которую следует учитывать, - это доступ к вашему веб-серверу. Если вы хотите кого-то, тогда выберите общественность. Я не знаю точно (и хотел бы, чтобы другие входные данные), как подключить только одну и ту же сеть общего пользования. Вы также можете разрешать определенные IP-адреса, но для этого я предлагаю сделать некоторые исследования самостоятельно.