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

如何将子域名指向特定端口的Web服务器?(Cloudflare+Node.js场景)

解决Cloudflare域名绑定Node.js应用并去掉端口号的问题

第一步:添加DNS记录

  1. 登录Cloudflare控制台,找到你的域名管理页面
  2. 切换到「DNS」标签,点击「添加记录」
  3. 根据服务器情况选择记录类型:
    • 如果服务器有固定公网IP,选「A」记录,「名称」填@(代表根域名domain.example)或你想要的子域名,「内容」填服务器IP,「代理状态」选橙色云朵(开启Cloudflare代理)
    • 如果服务器是通过二级域名指向的,选「CNAME」记录,「名称」同上,「内容」填服务器的域名,「代理状态」同样选橙色云朵
  4. TTL选「自动」,保存后等待几分钟让DNS生效

第二步:去掉端口号(两种实用方案)

方案1:Cloudflare Tunnel(推荐,无需暴露服务器端口)

这个方法不用在服务器上开放80/443端口,还能隐藏服务器真实IP:

  • 在服务器上安装Cloudflare Tunnel客户端cloudflared(以Linux为例):
    wget -q https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
    sudo dpkg -i cloudflared-linux-amd64.deb
    
  • 执行cloudflared tunnel login,跟着提示在浏览器中授权你的域名
  • 创建隧道:cloudflared tunnel create node-app-tunnel(名称可自定义)
  • 新建配置文件~/.cloudflared/config.yml,替换成你的隧道信息:
    tunnel: 你的隧道ID(创建隧道后控制台会输出)
    credentials-file: ~/.cloudflared/刚才的隧道ID.json
    ingress:
      - hostname: domain.example
        service: http://localhost:2000
      - service: http_status:404
    
  • 启动隧道并设置开机自启:
    sudo cloudflared tunnel run node-app-tunnel
    sudo cloudflared service install
    
  • 回到Cloudflare的DNS页面,添加一条CNAME记录:「名称」填domain.example,「内容」填你的隧道ID.cfargotunnel.com,代理状态保持橙色
  • 完成后访问domain.example即可直接进入Node.js应用

方案2:Nginx反向代理 + Cloudflare Page Rules

如果你的服务器已经在用Nginx,这种方法适配性更强:

  • 在服务器上新建Nginx配置文件/etc/nginx/sites-available/node-app.conf:
    server {
        listen 80;
        server_name domain.example;
    
        location / {
            proxy_pass http://localhost:2000;
            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;
        }
    }
    
  • 启用配置并重启Nginx:
    sudo ln -s /etc/nginx/sites-available/node-app.conf /etc/nginx/sites-enabled/
    sudo systemctl restart nginx
    
  • 回到Cloudflare,进入「规则」→「页面规则」,创建一条规则:
    • 匹配URL填domain.example/*
    • 添加设置「始终使用HTTPS」(推荐开启)
    • 确保DNS记录的代理状态为橙色云朵,这样Cloudflare会把请求转发到服务器的80端口,Nginx再转接到2000端口
  • 现在访问domain.example就不需要加端口号了

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:17:48