2017-03-25 6 views
1

Ich entwickle eine REST-API mit Knoten js unter Linux. Das ist mein erstes Codebeispiel, um zu versuchen, wenn alles funktioniert gut:Linux Nodejs Rest Service arbeiten nur localhost

'use strict'; 

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

var port = process.env.PORT || 8080 ; 

app.listen(port, "127.0.0.1", function(){ 
console.log("Express server is listening on port ", port); 
}); 

Ich habe versucht localhost zu nennen: 8080 in Linux-Server und funktioniert einwandfrei. Wenn ich versuche, die IP-Adresse des Servers mit diesem Port durch eine externe IP-Adresse anzurufen, reagiert der Express-Server nicht. Irgendwelche Hilfe dazu? Dank

+1

Klingt wie eine Firewall-Frage unabhängig davon, auszudrücken. Sie könnten ein Tool wie Localtunnel verwenden: https://github.com/localtunnel/localtunnel – Ain

+0

Sie hören nur auf localhost ... '" 127.0.0.1 "'. –

+0

Wenn Sie http: // hostname: 8080 auf dem Server aufrufen, funktioniert das? Wenn dies der Fall ist, dann könnte die Frage mit diesen Informationen aktualisiert werden, da es möglicherweise mehr als einen Grund gab, dass Sie keine Remote-Verbindung erhalten konnten und die Antworten bis jetzt 1 dieser Gründe beheben –

Antwort

1

Ihr zweiter Parameter an den app.listen()api, die Sie auf „127.0.0.1“ ist der Hostname. Dies führt dazu, dass der Knoten nur nach Anforderungen lauscht, die mit diesem Hostnamen aus der Anforderungsdomäne übereinstimmen.

Dies ist ein optionaler Parameter.

Vielleicht versuchen Sie die app.listen(port, callback) Form der API?

app.listen(port, function() { 
    console.log("Express server is listening on port ", port); 
}); 

app.get('/', function (req, res) { 
    res.send('Hello world!') 
}); 

Oder Sie können die [Hostname] Parameter in einer Konfigurationsdatei verschieben, wenn Sie nicht wollen, Ihren Dienst jeden Host-Namen zu hören.

Weitere Informationen zum Standardverhalten von Parametern finden Sie in der Dokumentation server.listen().

1

Versuchen Sie dies so Ihre App nur auf allen Netzwerkschnittstellen und nicht auf lokalen Host:

app.listen(port, "0.0.0.0", function(){ 
    console.log("Express server is listening on port ", port); 
}); 
+0

Ich habe es einfach versucht aber das Ergebnis ist dasselbe – APPGIS

+0

Ein funktionierender Code, möglicherweise ist Ihr Port nicht öffentlich zugänglich, ist das Problem – Gaurav