2015-11-27 7 views
5

Sono molto nuovo per questa roba, e cercando di fare qualche app espressoserver delle app express. Ascolto tutti Interfacce invece di localhost solo

var express = require('express'); 
var app = express(); 

app.listen(3000, function(err) { 
    if(err){ 
     console.log(err); 
     } else { 
     console.log("listen:3000"); 
    } 
}); 

//something useful 
app.get('*', function(req, res) { 
    res.status(200).send('ok') 
}); 

quando ho iniziato a server:

node server.js 

tutto va bene, ho vedo in console

listen:3000 

e quando provo

curl http://localhost:3000 

Vedo "ok". quando provo

telnet localhost 

vedo

Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]' 

ma quando provo

netstat -na | grep :3000 

vedo

tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 

la domanda è: perché ascoltare tutte le interfacce, invece di solo localhost? Sistema è Linux Mint 17 senza fischi

+2

[La fine manuale] (https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback) afferma: _ "Se il nome viene omesso, il server accetterà connessioni su qualsiasi indirizzo IPv6 (: :) quando IPv6 è disponibile, o qualsiasi indirizzo IPv4 (0.0.0.0) altrimenti "_. – robertklep

+0

Grazie. è un altro segno di "Explicit is better than implicit (c)", penso. – d2048

+1

Dato che accettare connessioni dal mondo esterno è una premessa di base per un server, l'ascolto di tutte le interfacce (al contrario di loopback) sembra essere un valore predefinito per me :-) – robertklep

risposta

11

è possibile associare l'indirizzo IP utilizzando il seguente codice

app.listen(3000, '127.0.0.1'); 
+0

Sì. Adesso lo so. thanx – d2048

1

From the documentation: app.listen(port, [hostname], [backlog], [callback])

lega e ascolto per le connessioni host e porta specificata . Questo metodo è identico a http.Server.listen() del nodo.

var express = require('express'); 
var app = express(); 
app.listen(3000, '0.0.0.0'); 
Problemi correlati