最近把之前的一个网站域名换成另一个域名,想要添加一下重定向,避免流量流失(虽然本来就没流量)。然后在 Cloudflare 配置时尝试多次都失败了,遇到各种 Your connection is not private 或者 Webpage Temporarily Down or Moved Permanently 报错,还有跳到 404 页面等各种问题。最后终于解决,这里记录一下。

Cloudflare 重定向配置的几种方案

要在 Cloudflare 中配置重定向有非常多的方式,进入 Cloudflare 域名管理的 Rules 页面可以看到右侧有非常多的规则可供配置,其中有好几个可以实现重定向,这里挑最简单的 Page Rules 和 Redirect Rules 说一下。

Page Rules

Page Rules 算是比较早期的功能,免费额度较少只有 3 个,配置重定向只需要参考下图:

其中 * 和 $1 是使用通配符匹配 URL 的后缀并将其携带到新地址。配置过 Nginx 的应该都了解,也可以理解为简单的正则替换。

在清单页面可以进行规则的排序和开启关闭,规则从前到后依次应用,如果有规则冲突则需要注意排序问题。

Redirect Rules

Redirect Rules 是近期才推出的功能,专门用于解决重定向问题,所以使用起来可能会更好理解,配置可参考下图:

这里不需要写通配符,如果需要保留 URL 后缀通过勾选最下方的 Preserve query string 即可。

在清单页面同样可以进行排序和开启关闭操作。

另外 Cloudflare 还提供了 Bulk Redirects,可以用于批量重定向的配置,比如网站迁移后 URL 规则变更了,可能就需要使用类似的功能。

Header Modification 和 Workers

另外 Header Modification 可用于修改请求和响应的 Header 信息,理论上为 response headers 添加上 location 头也可以实现重定向的功能。

而 Workers 功能更强大,可直接拦截请求后返回 301 重定向,不过有一定上手成本。

问题原因

再说说我遇到的问题,其实问题的原因很简单,因为我忘记为被重定向的域名配置 DNS 了。Cloudflare 中的一系列功能其实是需要流量通过它的 Proxy 才能实现的,而如果没有为域名配置 DNS,请求发起时浏览器无法从 DNS 服务器获取到域名的 IP 地址,也就无法发出请求。

所以要实现重定向,我们可以想一下流量的走向:

  1. 首先浏览器拿到 URL 后对域名进行解析,所以这一步要求我们必须为被重定向的域名添加 DNS 记录
  2. 浏览器拿到目标 IP 后发起请求,这里要注意如果拿到的不是 Cloudflare 的 IP,Cloudflare 就无法帮我们进行重定向的操作。所以这里要求我们为被重定向的域名添加的 DNS 记录必须开启了 Proxy 功能
  3. 浏览器接收到返回的 HTTP response,进行重定向操作。

另外添加的 DNS 记录最好使用 CNAME 记录指向到目标域名,其中的问题是什么暂时我还没搞清楚。

Cloudflare 重定向配置的更多相关文章

  1. nginx重定向配置

    # /etc/nginx/nginx.conf #写在server,location核心模块中,if也可以写.$http_host客户端设法要到达主机的主机名 if ($http_host !~ “^ ...

  2. Cloudflare DDoS配置案例

    导航: 这里将一个案例事项按照流程进行了整合,这样查看起来比较清晰.部分资料来自于Cloudflare 1.DDoS介绍 2.常用DDoS攻击 3.DDoS防护方式以及产品 4.Cloudflare ...

  3. Nginx中的Rewrite的重定向配置与实践

    阅读目录 一:理解地址重写 与 地址转发的含义. 二:理解 Rewrite指令 使用 三:理解if指令 四:理解防盗链及nginx配置   简介:Rewrite是Nginx服务器提供的一个重要的功能, ...

  4. SpringBoot(SpringMVC)使用addViewControllers设置统一请求URL重定向配置

    只需要在配置中重写 addViewControllers方法 import org.springframework.context.annotation.Configuration; import o ...

  5. Yii2项目高级模版 三个模块在同一个目录下的重定向配置

    最近做项目用到的,非常好用. 修改 advanced/backend/config/main.PHP 文件如下: return [ 'homeUrl' => '/admin', 'compone ...

  6. 【华为云网络技术分享】HTTP重定向HTTPS配置指南

    [摘要] 本文介绍使用华为云弹性负载均衡配置Http重定向到Https的方法. 1. HTTP.HTTPS 头部标识 ELB 对 HTTPS 进行代理,无论是 HTTP 还是 HTTPS 请求,到了  ...

  7. 关于nginx配置的不完全总结

    请参考官方: http://wiki.nginx.org/HttpRewriteModule#Synopsis 关于缓存大小权限 error log 有如下日志:an upstream respons ...

  8. 负载均衡集群之LVS配置命令

    ipvs/ipvsadm 添加集群服务--> ipvsadm -A|E -t|u|f VIP[:Port] -s scheduler [-p timeout] [-O] [-M netmask] ...

  9. Haproxy 重定向跳转设置 - 运维小结

    前面已经详细介绍了Haproxy基础知识 , 今天这里再赘述下Haproxy的重定向跳转的设置.  haproxy利用acl来实现haproxy动静分离,然而在许多运维应用环境中,可能需要将访问的站点 ...

  10. .NET:强签名程序集的加载问题 之 版本重定向

    背景 多数解决方案会包含多个项目,某些支持插件架构的解决方案中,更是包含多个插件项目,这些项目会使用一些第三方NuGet Packages,如果管理不慎,解决方案中会出现多个版本的引用,这在编译期间不 ...

随机推荐

  1. shell脚本编程(一)

    c81ba641-5ed7-4ab9-a7c0-e319e0f3890b 初识shell脚本编程 最近项目需求,需要了解下shell脚本编程,所以自己就必须玩玩了= = 初识shell脚本编程,找了几 ...

  2. 笔记:C++学习之旅---面向对象程序的设计1

    笔记:C++学习之旅---面向对象程序的设计1 面向对象的主要特征 1.抽象 2.封装 3.继承 4.多态 抽象:将程序的每一部分都看作一个抽象的对象,即程序有一组抽象的对象组成的更复杂点,这些对象根 ...

  3. 当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么?

    当我第一次通过Kotlin和Compose来实现一个Canvas时, 我收获了什么? 自从2019年Google推荐Kotlin为Android开发的首选语言以来已经经历了将近四年的时间, Compo ...

  4. 2020-12-24:MQ中,如何保证消息不丢失?

    福哥答案2020-12-24: 生产者丢失消息:如网络传输中丢失消息.MQ 发生异常未成功接收消息等情况. 解决办法:主流的 MQ 都有确认或事务机制,可以保证生产者将消息送达到 MQ.如 Rabbi ...

  5. 2022-01-13:K 个不同整数的子数组。 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续、不一定不同的子数组为好子数组。 (例如,[1,2,3,1

    2022-01-13:K 个不同整数的子数组. 给定一个正整数数组 A,如果 A 的某个子数组中不同整数的个数恰好为 K,则称 A 的这个连续.不一定不同的子数组为好子数组. (例如,[1,2,3,1 ...

  6. 2021-10-08:填充每个节点的下一个右侧节点指针。给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找

    2021-10-08:填充每个节点的下一个右侧节点指针.给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点.填充它的每个 next 指针,让这个指针指向其下一个右侧节点.如果找 ...

  7. Django4全栈进阶之路17 项目实战(用户管理):user_add.html用户新增画面设计

    1.模块: {% extends 'base.html' %} {% block content %} <div class="card mt-3"> <div ...

  8. 使用增强版 singleflight 合并事件推送,效果炸裂!

    hello,大家好啊,我是小楼. 最近在工作中对 Go 的 singleflight 包做了下增强,解决了一个性能问题,这里记录下,希望对你也有所帮助. singleflight 是什么 single ...

  9. pupstudy的使用

    打开环境 点击管理--打开根目录 把靶场放在www文件夹里 网页打开127.0.0.1/靶场文件名即可

  10. Java的CAS操作

    介绍 CAS 技术是为了解决问题而生的,通过 CAS 我们可以以无锁的方式,保证对共享数据进行 "读取 - 修改 - 写回" 操作序列的正确性. CAS 是乐观锁设计思想的实现.C ...