You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署到Ubuntu的Express接口请求报localhost连接拒绝该如何解决?

问题排查与解决步骤

核心问题定位

你遇到的报错最根本原因是前端接口地址硬编码错误:前端代码里写死了请求http://localhost:2096/getDataFromDatabase,当用户通过线上域名访问站点时,代码运行在用户的本地浏览器上,localhost指向的是用户自己的电脑,而非你的Ubuntu服务器,自然会触发连接拒绝错误。


分步修复方案

1. 优先修复前端请求地址

推荐改成相对路径,自动适配当前站点的域名、协议与端口,不需要硬编码配置:

$( document ).ready(function() {
    // 改为相对路径,自动匹配当前部署环境
    $.get('/getDataFromDatabase').done(function(data){ 
        for (entry of data) {
            dates.push(entry.date.split('T')[0]);
            totalValues.push(entry.totalValue);
        }
    });
});

如果接口和前端站点域名不一致,可以替换为你的线上实际域名,注意要和Cloudflare代理的协议(http/https)保持一致。

2. 服务端配置排查

  • 检查Ubuntu服务器上Express服务是否正常启动,执行ss -tulpn | grep 2096确认2096端口有node进程监听,同时修改监听配置允许外部访问:
    // 新增0.0.0.0参数,允许外部网络访问服务
    app.listen(PORT, '0.0.0.0', () =>
      console.log(`Example app listening on port ${PORT}!`),
    );
    
  • 推荐配置Nginx反向代理,不需要对外暴露2096端口,统一走Cloudflare支持的80/443端口,Nginx配置示例:
    location /getDataFromDatabase {
        proxy_pass http://127.0.0.1:2096;
        proxy_set_header Host $host;
    }
    
    如果不使用反向代理,需要检查Ubuntu防火墙(ufw)是否开放2096端口,同时确认Cloudflare的端口规则支持2096:Cloudflare默认仅代理常用端口,2096不在默认支持列表中,直接访问会被拦截。

3. Cloudflare配置检查

  • 确认SSL/TLS设置和源站协议匹配,避免协议不一致导致的跨域或访问失败问题。
  • 上线后建议调整CORS配置,仅允许你的站点域名跨域访问,替换掉当前的app.use(cors())配置,降低安全风险。

内容的提问来源于stack exchange,提问作者Godzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 21:30:00