Nodejs 要让 node 监听 80 的话只能用 Nginx 转发吗?
Nodejs 要让 node 监听 80 的话只能用 Nginx 转发吗?
不知道用 root 运行 node 是否可行?因为不确定 Nginx 是否会修改 header (比如 gzip )。
吓? 80 没占用的话…不是顺便跑的吗…
跟 root 有啥关系…你的 nginx 也是 用 root 老跑的吗?
听过“能力”吗?
Since Kernel 2.6.33.
不是 root 权限几乎不能玩 1024 以下的端口…,运维常识
Port <= 1024,正常情况下只有特权进程才能 Listen,Nginx 先以 root bind 再 setuid,不是以 root 身份提供服务的!
不是可以用 CAP_NET_BIND_SERVICE 让普通用户也能跑低端口吗…
你说的…这个我知道啊…你后来补充"能力"和 setuid 不就是非 root 用户使用低端口方法吗…
高内核版本随便用,低内核就呵呵
你这个是针对 Linux 的问题吧,应该发到 Linux 区。
看起来只是开发过程中用用,建议直接用另外的端口 3000、5000、8080 等。
如果需要查看 header 区别,一个在 nginx 后访问,一个直接访问,把两种情况的 HTTP header 打印出来对比就行了。
非要使用 80 端口的话,可以参考这个(来自 brew info nginx-full
):
$ sudo chown root:wheel /usr/local/opt/nginx-full/bin/nginx
$ sudo chmod u+s /usr/local/opt/nginx-full/bin/nginx
别瞎起 header 名字 nginx 就不会改。
居然质疑 nginx …… 你质疑 node 也好一点啊
关于Node.js监听80端口的问题,不一定非要使用Nginx进行转发。虽然Nginx是一个强大且常用的反向代理服务器,但还有其他方法可以实现Node.js监听80端口。
首先,Node.js本身就可以创建一个HTTP服务器来监听特定的端口,包括80端口。以下是一个简单的示例代码:
const http = require('http');
const port = 80;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
server.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
但请注意,由于80端口是HTTP服务的标准端口,通常需要管理员权限才能监听。因此,在运行上述代码时,可能需要使用管理员权限(例如在Linux中使用sudo
)。
另外,除了Nginx之外,还可以使用其他反向代理服务器或工具来实现端口转发,如iptables、Apache等。不过,Nginx因其高性能和易用性而广受欢迎。
总之,虽然Nginx是一个常用的选择,但并非唯一选择。根据具体需求和环境,可以选择最适合的方法来实现Node.js监听80端口。