关于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访问正常:

关于127.0.0.1的一点思考_第1张图片

[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的区别:

  • 本机ip、127.0.0.1和0.0.0.0区别
  • 0.0.0.0和127.0.0.1
  • What is the difference between 0.0.0.0, 127.0.0.1 and localhost?

你可能感兴趣的:(关于127.0.0.1的一点思考)