关于127.0.0.1的一点思考

  作者:zhanhailiang 日期:2014-11-11

阅读《Node.js入门经典》第一章有点小困惑~~

下面代码:

[root@~/wade/nodejs/nodetest]# cat server.js 
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('i am using node.js');
}).listen(3000, '127.0.0.1');
[root@~/wade/nodejs/nodetest]# node server.js

可是本地訪问成功,网络解析成功:

[root@~]# netstat -an|grep 3000
tcp        0      0 127.0.0.1:3000              0.0.0.0:*                   LISTEN      
[root@~]# curl http://127.0.0.1:3000
i am using node.js

可是使用公网ip訪问却老是报Connection Error:

GET http://公网IP:3000/ net::ERR_CONNECTION_REFUSED 

初步推断应该和本地监听有关,试了了去掉127.0.0.1:

^C[root@~/wade/nodejs/nodetest]# cat server.js 
var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('i am using node.js');
}).listen(3000);
[root@~/wade/nodejs/nodetest]# node server.js

此时通过公网IP訪问正常:


[root@~]# netstat -an|grep 3000
tcp        0      0 0.0.0.0:3000                0.0.0.0:*                   LISTEN


初步定位差别在于监听的是127.0.0.1:3000还是0.0.0.0:3000。

查到几篇相关文章解释下127.0.0.1和0.0.0.0的差别:

原文地址:https://www.cnblogs.com/yjbjingcha/p/6944995.html