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

无法从浏览器访问DigitalOcean服务器上的Node.js代理URL

问题:Node.js代理服务器本地curl正常但浏览器无法访问

环境配置

  • DigitalOcean Droplet
  • Cyberpanel
  • Node.js v12.22.9
  • PM2(进程管理工具)

代理服务器代码(app.js)

const express = require('express');
const request = require('request');
const cors = require('cors');

const app = express();
const PORT = 5000;

app.use(cors());

app.get('/proxy', (req, res) => {
  const targetUrl = req.query.target;
  if (!targetUrl) {
    return res.status(400).send('Missing target URL');
  }

  request(targetUrl, (error, response, body) => {
    if (error) {
      return res.status(500).send(error.message);
    }
    res.send(body);
  });
});

app.listen(PORT, '0.0.0.0', () => {
  console.log(`Proxy server is running on port ${PORT}`);
});

当前运行状态

  • 已通过PM2启动代理服务器,确认服务正常运行并监听5000端口
  • 服务器本地执行curl "http://myip:5000/proxy?target=http://example.com"可获取预期响应
  • 浏览器无法访问该代理URL

排查与解决步骤

  1. 检查DigitalOcean防火墙规则
    进入Droplet的防火墙设置页面,确认已添加5000端口TCP入站规则,允许所有IP访问。

  2. 服务器系统防火墙放行端口
    执行ufw status查看系统防火墙状态,若启用,添加端口放行规则:

    ufw allow 5000/tcp
    ufw reload
    
  3. Cyberpanel端口权限设置
    登录Cyberpanel后台,在防火墙/安全模块中添加5000端口的入站允许规则,避免面板拦截非标准端口请求。

  4. 确认公网访问地址
    浏览器访问时使用Droplet的公网IP,格式为:

    http://[你的公网IP]:5000/proxy?target=http://example.com
    

    若使用域名,需确保域名正确解析到公网IP,且无DNS缓存干扰。

  5. CORS配置优化(可选)
    若默认跨域配置存在潜在问题,可显式指定允许的来源:

    app.use(cors({
      origin: '*', // 或指定前端具体域名如'https://your-frontend.com'
      credentials: true
    }));
    

    修改后重启PM2服务:pm2 restart app

  6. 验证端口监听状态
    执行以下命令确认5000端口被Node.js进程正确监听:

    netstat -tulpn | grep 5000
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:40:05