const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req,res) => {
res.statusCode = 200;
res.setHeader('Content-Type','text/plain');
res.end('Hello World\n');
});
server.listen(port,hostname,() => {
console.log(`Server running at http://${hostname}:${port}/`);
});
之后在ubuntu服务器中node http-server.js之后,显示服务器在运行,之后在mac的google chrome浏览器键入120.79.34.177:3000端口,显示无法连接,更改了端口,关闭了ubuntu防火墙依旧无法访问。求解决。跪求。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
根据您描述的情况,您在Mac上通过SSH连接到Ubuntu服务器并运行了一个Node.js HTTP服务器,但无法从Mac的浏览器访问该服务器。针对此问题,我们可以按照以下步骤进行排查和解决:
确认服务器监听地址: 目前您的Node.js应用监听的是127.0.0.1
,这是一个环回地址,仅允许本地访问。为了让外部设备能够访问,您需要将监听地址改为0.0.0.0
,这样服务器就能监听所有网络接口上的请求。
修改代码如下:
const hostname = '0.0.0.0'; // 从'127.0.0.1'修改为'0.0.0.0'
检查服务器端口开放情况: 确认服务器的防火墙没有阻止3000端口的入站连接。虽然您提到已经关闭了Ubuntu的防火墙,但请确保其他安全组或网络层面的防火墙规则(如阿里云ECS的安全组设置)没有限制该端口。
网络连通性验证:
netstat -tuln | grep 3000
检查3000端口是否正在监听。ping 120.79.34.177
确保网络可达。telnet 120.79.34.177 3000
或nc -zv 120.79.34.177 3000
测试端口是否对外开放。路由与网络配置: 确保服务器所在的VPC或网络配置允许来自您Mac的IP地址的入站流量,并且没有错误的路由规则阻止通信。
避免端口冲突或被占用: 检查服务器上是否有其他服务占用了3000端口,可以使用lsof -i :3000
命令查看。
重启Node.js服务: 修改完代码后,请确保重启了Node.js应用,以便新的监听地址生效。
如果以上步骤均未解决问题,请检查Mac端的网络设置,包括代理设置是否可能拦截了连接,并考虑是否有企业级防火墙或ISP级别的网络策略限制了访问。此外,确认服务器资源(CPU、内存)未达到极限,导致服务无法正常响应。您也可以通过ECS一键诊断全面排查并修复ECS问题。