Tôi rất mới cho công cụ này, và cố gắng để làm cho một số ứng dụng nhanhmáy chủ ứng dụng tốc hành. lắng nghe tất cả intefaces thay vì localhost chỉ
var express = require('express');
var app = express();
app.listen(3000, function(err) {
if(err){
console.log(err);
} else {
console.log("listen:3000");
}
});
//something useful
app.get('*', function(req, res) {
res.status(200).send('ok')
});
khi tôi bắt đầu máy chủ bằng cách:
node server.js
mọi thứ diễn ra tốt đẹp, tôi thấy trong giao diện điều khiển
listen:3000
và khi tôi cố gắng
curl http://localhost:3000
Tôi thấy 'ok'. khi tôi cố gắng
telnet localhost
tôi thấy
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'
nhưng khi tôi cố gắng
netstat -na | grep :3000
tôi thấy
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN
câu hỏi là: tại sao nó nghe tất cả các giao diện thay vì chỉ localhost? hệ thống Linux Mint 17 mà không cần bất kỳ còi
[Tài liệu hướng dẫn tốt] (https://nodejs.org/api/http.html#http_server_listen_port_hostname_backlog_callback) khẳng định: _ "Nếu tên máy được bỏ qua, máy chủ sẽ chấp nhận kết nối trên bất kỳ địa chỉ IPv6 (: :) khi IPv6 khả dụng hoặc bất kỳ địa chỉ IPv4 nào (0.0.0.0) nếu không "_. – robertklep
Cảm ơn. đó là một dấu hiệu của "Rõ ràng là tốt hơn so với tiềm ẩn (c)", tôi nghĩ. – d2048
Cho rằng chấp nhận các kết nối từ thế giới bên ngoài là một tiền đề cơ bản cho một máy chủ, lắng nghe tất cả các giao diện (như trái ngược với loopback) có vẻ là một mặc định hợp lý với tôi :-) – robertklep