[求教]我买了一个域名,如何用 cloudflare 代理我的 azure 服务器的 ip

35 天前
 Lifemm

背景:从 Spaceship 买了一个数字域名,十年只要大概$6 。我正好在 azure 有一台服务器,部署了一些服务,比如端口 5320 ,5000...,现在都是通过 ip:port 访问的(可以正常访问)。

问题:如何把我买的域名用 cloudflare 去代理。

最终效果:访问我的域名:port ,会直接像 ip:port 一样正常访问。

目前操作在 spaceship

1.修改我的域名的 Custom DNS 为 NAMESERVERS:

[dara.ns.cloudflare.com] [mario.ns.cloudflare.com]

2.disable DNSSEC

在 cloudflare

1.给我的域名添加了 DNS Records 类型

Type Name Content Proxy status TTL
A www ip DNS only Auto

2.disable DNSSEC

3.尝试在 cloudflare 首页-》 Workers & Pages-》 Overview 添加了一个 worker

workers.js

export default {
  async fetch(request, env, ctx) {
    url.host = 'ip:port';
    return fetch(url, { headers: request.headers, method: request.method, body: request.body });
    //return new Response('Hello World!');
  },
};
结果:报错

return new Response('Hello World!');只有这行是可以打印出来的。

第一次提问,上述表达有不正确的地方,请大佬们不吝赐教,谢谢!

926 次点击
所在节点    Cloudflare
3 条回复
baobao1270
34 天前
1. 为什么要禁用 DNSSEC ?建议启用以增强 anquanx
2. 不需要 worker, 直接用 origin rule 配回源端口
3. 不能选 DNS Only Mode ,要把橙云点亮
baobao1270
34 天前
Anqunx -> 安全

另外如果你打算用 worker ,那么就要点亮橙云,不然流量根本不经过 CF ,worker 也就不起作用了
cdlnls
34 天前
如果你的 Proxy status 是 DNS only , 那么在查询 DNS 的时候,DNS 服务器会直接返回你设置的 IP ,所以这个客户端发器的 http 请求压根就不会发送到 cf 的服务器上,这个 worker 它应该也不会生效。

你这个需求,其实没有必要用 worker 来做,出错的原因是语法错误。

如果你只是希望用域名代替 IP ,那么直接设置一个 DNS 解析就可以了。然后等 DNS 解析生效了,就可以在浏览器里面使用域名访问就可以了 http://domain.com:5000

如果你是想隐藏掉端口,http://app1.domain.com http://app2.domain.com ,那就可以在 cf 上面配置 Origin Rules ,根据域名,把流量转发到后端对应的应用的端口上。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1033081

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX