我想在 Amazon Linux 的 Amazon EC2 实例上的端口 80 上运行 node.js TCP 服务器。我已经将 80 添加到安全组,但问题是让 node.js 绑定到端口 80,这通常需要 root 权限。
最简单的解决方案似乎是使用 authbind,但无法从 EC2 yum repo 访问它。Amazon Linux 是否有等效的实用程序?或者这个发行版的其他一些解决方法?还是使用 authbind 实际上是个坏主意?
我想在 Amazon Linux 的 Amazon EC2 实例上的端口 80 上运行 node.js TCP 服务器。我已经将 80 添加到安全组,但问题是让 node.js 绑定到端口 80,这通常需要 root 权限。
最简单的解决方案似乎是使用 authbind,但无法从 EC2 yum repo 访问它。Amazon Linux 是否有等效的实用程序?或者这个发行版的其他一些解决方法?还是使用 authbind 实际上是个坏主意?
我最终绑定到更高的端口,然后使用 iptables 将端口 80 流量转发到该端口。另一种选择是使用 AWS 负载均衡器从传入端口 80 到 ec2 实例上的更高端口。
这有点乏味,但如果你安装 gcc,你可以从源代码编译它。你可以去这里获取 2.1.1 版本。单击“快照”链接以获取 tar.gz 文件。我似乎无法直接使用 wget 下载它(必须从网络浏览器下载然后上传),YMMV。
如果使用systemd
,您可以使用AmbientCapabilities
允许服务绑定到较低的端口。
这是通过/etc/systemd/system
目录中的服务配置文件完成的:
[Service]
AmbientCapabilities=CAP_NET_BIND_SERVICE
...