2013-03-28 15 views
42

Ho un semplice server Sinatra che eseguo tramite textmate ma non riesco ad accedere da un altro computer sulla stessa rete.Impossibile accedere al server Sinatra locale da un altro computer sulla stessa rete

Sto eseguendo Ruby 1.9.3p327 e Sinatra 1.4.1 su Mac OS 10.8.3. Il firewall è disabilitato.

Ho testato lo stesso scenario su reti e computer diversi.

Il computer risponde a semplici ping, ma quando provo a telnet porta 4567 non riesco a stabilire una connessione.

+0

Perché stai utilizzando Telnet? Non capisco cosa stai cercando di ottenere qui. Sinatra è una struttura web. Prova con un browser. –

+0

Non funziona con un browser –

+0

Solo per essere sicuri: hai incluso il numero di porta alla fine dell'indirizzo IP? Qualcosa come: your.ip.address: 4567 –

risposta

86

C'è stato un recent commit to Sinatra che ha cambiato l'indirizzo di ascolto predefinito a localhost da 0.0.0.0 in modalità di sviluppo a causa di problemi di sicurezza.

Per consentire esplicitamente l'accesso dalla rete, è necessario eseguire l'app in un'altra modalità (ad es. Produzione) oppure impostare bind option su 0.0.0.0.

È possibile farlo da riga di comando utilizzando il costruito nel server utilizzando l'opzione -o:

$ ./my_sinatra_file.rb -o 0.0.0.0 
+0

Questo ha funzionato! Grazie! –

+2

Quel recente commit era recente al momento della risposta di @ matt, ma qui è un anno dopo e il binding predefinito è nascosto nei documenti di Sinatra e non è menzionato nel Getting Started. grrr ... –

+9

Puoi anche impostarlo direttamente nella tua app usando 'set: bind, '0.0.0.0'' – GuiSim

4

Assicurarsi che il server sinatra non sia in ascolto solo sull'indirizzo ip localhost (127.0.0.1).

+0

Come faccio? Scusa, sono un noob completo :) –

+3

Leggi l'aiuto di Sinatra, oppure esegui il tuo server con il flag '-h'. Indica come farlo –

0

sto rintocchi con qualche informazione in più che può aiutare le persone come me sbattere la testa contro il parete.

Sono su una macchina Windows, non un Mac, e ho dovuto aprire la porta che stavo usando (di default per Sinatra è 4567) al pubblico (anche se sono su una rete universitaria).

Per eseguire questa operazione in Windows 10:

  1. Hit le finestre principali
  2. Ricerca di firewall e premere Invio
  3. Vai alle impostazioni avanzate
  4. Clicca sulle regole in entrata in alto a sinistra
  5. Fare clic sulla nuova regola in alto a destra
  6. Fare clic sull'opzione porta
  7. Inserisci il tuo porto (probabilmente 4567 per Sinatra)
  8. Avanti
  9. E ora scegli da dominio/privato/pubblico.

Ora un'altra cosa da considerare è chi può accedere al tuo server web. Se vuoi qualcuno, poi scegli il pubblico. Non so per certo (e mi piacerebbe l'input di altri) come ottenere solo i dispositivi sulla stessa rete pubblica da connettere. Puoi anche consentire specifici indirizzi IP, ma per questo suggerisco di fare qualche ricerca per conto tuo.

Problemi correlati