使用端口80运行Node.js的最佳实践(Ubuntu/Linode)

我正在设置我的第一个Node.js服务器上的cloud Linux node我对Linux admin..(顺便说一下,我不想同时使用Apache。)

所有的安装都是正确的,但是我发现除非我使用root login,我听不进去port 80用节点。但是,出于安全原因,我不愿将其作为根运行。

最佳做法是:

  1. 为节点设置良好的权限/用户,使其安全/沙箱化?
  2. 允许在这些约束范围内使用端口80。
  3. 启动节点并自动运行它。
  4. 处理发送到控制台的日志信息。
  5. 任何其他一般的维护和安全问题。

我应该将端口80的流量转发到不同的侦听端口吗?


慕运维8079593
浏览 812回答 3
3回答

慕码人2483693

授予安全用户使用端口80的权限请记住,我们不希望以根用户的身份运行您的应用程序,但是有一个问题:您的安全用户没有使用默认HTTP端口(80)的权限。您的目标是能够发布一个网站,访问者可以使用导航到一个易于使用的URL,如http://ip:port/不幸的是,除非您以root用户身份登录,否则通常必须使用如下所示的URLhttp://ip:port-港口号>1024。很多人被困在这里,但解决办法很简单。有几个选择,但这是我喜欢的。键入以下命令:sudo apt-get install libcap2-bin sudo setcap cap_net_bind_service=+ep `readlink -f \`which node\``现在,当您告诉Node应用程序希望它在端口80上运行时,它不会抱怨。

森栏

在绑定到端口80(或443)后删除根权限。这允许端口80/443保持保护,同时仍然阻止您以root用户身份服务请求:function drop_root() {     process.setgid('nobody');     process.setuid('nobody');}使用上述功能的完整示例:var process = require('process');var http = require('http');var server = http.createServer(function(req, res) {     res.write("Success!");     res.end();});server.listen(80, null, null, function() {     console.log('User ID:',process.getuid()+', Group ID:',process.getgid());     drop_root();     console.log('User ID:',process.getuid()+', Group ID:',process.getgid());});
打开App,查看更多内容
随时随地看视频慕课网APP