目前我的主机使用了新的防火墙,根据他们的计划,他们不允许任何基于 ipv6 的 http 连接,所有连接都应该使用 ipv4。 我有一个使用node.js和expressJs的服务,我还使用pm2作为进程管理器来运行我的应用程序,我的问题是http请求由于使用ipv6而失败。我怎样才能强制node.js在nodeJs应用程序上监听版本4的IP地址。
我监听端口的代码部分:
const app = express();
...MANY MIDDLEWARE app.use();
mongoose.connect(MONGODB_URI, {useNewUrlParser: true, useUnifiedTopology: true})
.then(result => {
app.listen(APP_PORT);
socketServer.listen(SOCKET_PORT, function () {
console.log('server listening to: %j', socketServer.address())
});
})
.catch(err => {
console.log
});
我可以在express中使用如下所示的内容吗:
var server = http.createServer(app).listen(APP_PORT, APP_IP);
最佳答案
我也对此感到好奇,但是基于一个有用的链接,它就像一个魅力:
https://github.com/nodejs/node/issues/18041
。
我有这段代码:
var server = http.createServer(app);
server.listen(port);
为了监听 ipv4,我做了以下更改:
var server = http.createServer(app);
server.listen(port,"127.0.0.1");
再尝试一次该端口正在使用 ipv4 进行监听,否则它正在监听 ipv6 :
$ sudo netstat -lntp |grep -i 3000
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 20501/node /home/ml
关于node.js - 如何强制node.js pm2基于ipv4运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60131421/