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

如何通过Cloudflare将域名指向带端口的IP地址?

解决域名指向带端口服务器的问题

你遇到的核心问题是:DNS记录(A/AAAA)本身不支持携带端口,而SRV记录仅适用于特定协议的服务发现(比如邮件、即时通讯),普通HTTP/HTTPS访问不会自动识别SRV记录,所以配置无效。以下是几种可行的解决方案:

方案一:Cloudflare页面规则实现URL跳转

如果可以接受地址栏显示IP+端口,直接用Cloudflare的页面规则做转发:

  • 登录Cloudflare控制台,进入test.mydomain.org的管理页面
  • 找到「页面规则」选项,新建规则
  • 匹配URL设置为 test.mydomain.org/*
  • 选择「转发URL」动作,转发类型选301(永久)或302(临时),目标URL填写 http://1.1.1.1:25750/$1(如果服务器用HTTPS,替换成https)
  • 保存规则,等待生效后,访问域名会自动跳转到带端口的服务器地址

方案二:反向代理(推荐,无地址栏跳转)

通过在服务器上部署反向代理(如Nginx),让80/443端口(HTTP/HTTPS默认端口)接收请求,再转发到25750端口的Express服务,地址栏始终显示域名:

  1. 在服务器上安装Nginx
  2. 编辑Nginx配置文件(通常在/etc/nginx/sites-available/test.mydomain.org),添加以下内容:
server {
    listen 80;
    server_name test.mydomain.org;

    location / {
        proxy_pass http://localhost:25750;
        # 传递必要的请求头,确保Express服务能正确获取客户端信息
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. 启用配置并重启Nginx:
sudo ln -s /etc/nginx/sites-available/test.mydomain.org /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl restart nginx
  1. 在Cloudflare给test.mydomain.org添加A记录,指向1.1.1.1,并开启橙色云朵(代理模式),完成后访问域名即可直接到Express服务

方案三:修改Express监听端口为80/443

如果服务器的80/443端口未被占用,可以直接让Express监听默认端口,无需额外配置:

  • 修改Express代码的监听端口:
app.listen(80, '0.0.0.0', () => {
    console.log('Server running on port 80');
});
  • 注意:普通用户无法监听1024以下端口,可通过两种方式解决:
    1. 用root权限启动服务
    2. 给Node.js授权绑定低端口:sudo setcap 'cap_net_bind_service=+ep' $(which node)
  • 之后在Cloudflare添加A记录指向1.1.1.1,直接访问域名即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 11:22:12