开发者社区 问答 正文

外网无法连接服务器 求解决

在mac终端ssh连接了ubuntu服务器之后(ssh root@ 120.79.34.177),安装好nodejs,在http-server.js文件中写好了测试代码

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防火墙依旧无法访问。求解决。跪求。

展开
收起
游客uqgkcqokyhyoo 2019-03-09 00:02:23 674 分享 版权
阿里云 AI 助理回答

根据您描述的情况,您在Mac上通过SSH连接到Ubuntu服务器并运行了一个Node.js HTTP服务器,但无法从Mac的浏览器访问该服务器。针对此问题,我们可以按照以下步骤进行排查和解决:

  1. 确认服务器监听地址: 目前您的Node.js应用监听的是127.0.0.1,这是一个环回地址,仅允许本地访问。为了让外部设备能够访问,您需要将监听地址改为0.0.0.0,这样服务器就能监听所有网络接口上的请求。

    修改代码如下:

    const hostname = '0.0.0.0'; // 从'127.0.0.1'修改为'0.0.0.0'
    
  2. 检查服务器端口开放情况: 确认服务器的防火墙没有阻止3000端口的入站连接。虽然您提到已经关闭了Ubuntu的防火墙,但请确保其他安全组或网络层面的防火墙规则(如阿里云ECS的安全组设置)没有限制该端口。

  3. 网络连通性验证

    • 在服务器上使用netstat -tuln | grep 3000检查3000端口是否正在监听。
    • 从Mac终端使用ping 120.79.34.177确保网络可达。
    • 使用telnet 120.79.34.177 3000nc -zv 120.79.34.177 3000测试端口是否对外开放。
  4. 路由与网络配置: 确保服务器所在的VPC或网络配置允许来自您Mac的IP地址的入站流量,并且没有错误的路由规则阻止通信。

  5. 避免端口冲突或被占用: 检查服务器上是否有其他服务占用了3000端口,可以使用lsof -i :3000命令查看。

  6. 重启Node.js服务: 修改完代码后,请确保重启了Node.js应用,以便新的监听地址生效。

如果以上步骤均未解决问题,请检查Mac端的网络设置,包括代理设置是否可能拦截了连接,并考虑是否有企业级防火墙或ISP级别的网络策略限制了访问。此外,确认服务器资源(CPU、内存)未达到极限,导致服务无法正常响应。您也可以通过ECS一键诊断全面排查并修复ECS问题。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答