如何在外网访问node.js搭建的web服务器
在ubuntu环境中,我们经常使用node.js搭建简单的web测试环境。下面是一个简单的web服务器代码。我们可以通过node运行它,并且在ubuntu中通过浏览器访问它。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8081, '127.0.0.1');
console.log('Server running at http://127.0.0.1:8081/');
但是,对于这个服务,我们在外网是不能访问到的。我们如何能够在外网访问这个web服务呢?其实,很简单,我们只要将node.js监听的网址修改为0.0.0.0就可以了,这样node.js就可以对外提供web服务了。因为,127.0.0.1代表的是只监听本地的请求。
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(8081, '0.0.0.0');
console.log('Server running at http://0.0.0.0:8081/');
对于ip和端口的监听状态。可以通过netstat -lnp
来察看。
ubuntu@ubuntu-System-Name:~/node.js$ node hello.js &
[1] 3485
ubuntu@ubuntu-System-Name:~/node.js$ Server running at http://0.0.0.0:8081/
ubuntu@ubuntu-System-Name:~/node.js$ netstat -lnp
(并非所有进程都能被检测到,所有非本用户的进程信息将不会显示,如果想看到所有信息,则必须切换到 root 用户)
激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:8081 0.0.0.0:* LISTEN 3492/node
tcp 0 0 127.0.1.1:53 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
udp 0 0 0.0.0.0:631 0.0.0.0:* -
udp 0 0 0.0.0.0:54910 0.0.0.0:* -