Веб-сервис Ruby Sinatra работает на localhost: 4567, но не на IP


У меня есть веб-сервис ruby(с использованием sinatra) на 32-битной ОС windows 7. Он работает на порту 4567. Его работа нормально, когда я использую localhost: 4567 , но когда я заменяю localhost на локальный ip моей машины, говорят, 192.168.103.99:4567 он не работает и не может подключиться. Я уже отключил брандмауэр, байпас прокси и добавил порт 4567 в исключение, все еще не везет.

В чем может быть проблема ?

4 26

4 ответа:

Из комментария @SudarshanShubakar следующее работало на меня.

ruby app.rb -o 0.0.0.0

При использовании встроенного сервера через проверку run! if app_file == $0, документ Синатры объясняет, что set :bind, '0.0.0.0' требуется сделать интерфейс доступным вне уровня localhost.

Не требуется использовать пользовательский IP-адрес или обратный DNS (mydomain.com...): '0.0.0.0' - это законное значение , ожидаемое Синатрой, которое будет интерпретировано правильно.

Таким образом, минимальное автономное приложение Sinatra, доступное на всех интерфейсах, а не только на localhost, было бы быть:
require 'sinatra/base'

class MyApp < Sinatra::Base
  set :bind, '0.0.0.0'

  get '/' do
    'Hello World'
  end

  run! if app_file == $0
end

Чтобы задать имя хоста сервера или IP-адрес, используйте параметр sinatra bind like

set :bind, '192.168.103.99'

Это

require 'rubygems'
require 'sinatra'
require "dbi"

set :bind, '192.168.200.185'
get '/' do
    'hello word'
end