端口 100 不是本地主机 node.js 中的 运行

port 100 not running in node.js in localhost

我已经使用以下代码在 node.js 中创建了一个 http 服务器,并尝试 运行 它在端口 100 上:

var http = require("http");

http.createServer(function (request, response) {
    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end("Howdy");
}).listen(100);

console.log("server running on port 100"); 

这样,服务器无法启动,我在 linux 控制台上收到以下错误消息:

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: listen EACCES
    at errnoException (net.js:901:11)
    at Server._listen2 (net.js:1020:19)
    at listen (net.js:1061:10)
    at Server.listen (net.js:1135:5)
    at Object.<anonymous> (/home/badhai/Desktop/mainn.js:6:4)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)

但是如果我在端口 100 上提升一个 sails.js 应用程序,它 运行s 在端口 100 上成功。但是,上面的代码 运行s 在端口 8081 上成功。我想要想知道我是否需要对服务器创建方法或其他地方进行任何更改,以便它可以在端口 100 上成功 运行?

大多数现代操作系统限制绑定到保留端口(小于 1024)到进程 运行 作为根(或等效)。

错误消息的 EACCES 部分是此处的关键 - 这意味着您无权访问该端口。 < 1024 的端口是系统保留的。最好使用 1024-65535

范围内的端口

如果您绝对必须绑定到端口 100,谷歌搜索将为您提供多种方法:

https://gist.github.com/firstdoit/6389682

最好使用 > 1024 的端口。我使用的端口从 3000 开始。但是如果你真的想在端口 100 上启动它并且你明白你在做什么,那么安装 setcap 就可以了允许绑定端口 <1024.

> sudo apt-get install setcap
> sudo setcap 'cap_net_bind_service=+ep' /usr/local/bin/node

NodeJS 也可以安装在其他目录中,所以最好检查它在哪里,然后用你的路径调用上面的 setcap 命令。

> which node
/usr/local/bin/node