Cloudflare:覆盖不同路径的URL

时间:2018-01-03 21:07:44

标签: dns reverse-proxy cloudflare http-proxy

我将Cloudflare设置为CNAME www.foo.comwww.bar.com。控制台中的图标显示已启用DNS和HTTP代理。当我访问www.foo.com时,我会看到www.bar.com的内容。

我喜欢它,以便当Cloudflare收到www.foo.com/ORIGINAL_PATH格式的网址时,它会将请求代理到www.bar.com/x/y/z/ORIGINAL_PATH。我希望Cloudflare代理请求 - 不要重定向它。

是否有可以帮助解决这个问题的页面规则?

1 个答案:

答案 0 :(得分:0)

虽然我认为仅凭页面规则无法做到这一点,但您可以使用Cloudflare Workers来实现。

  1. 在Cloudflare仪表板中打开源域页面。

  2. 转到Workers标签。

  3. Manage Workers -> Create a Worker

  4. 添加代码。您可以对路径进行硬编码,也可以使其动态化,如下所示,以允许添加多个重定向路径。

addEventListener('fetch', event => {
  event.respondWith(handleRequest(event.request))
})

/**
 * Respond to the request
 * @param {Request} request
 */
async function handleRequest(request) {
  const url = new URL(request.url)
  const { pathname } = url

  const targetUrl = `https://www.target-domain.com/x/y/z${pathname}`
  
  return fetch(targetUrl)
}
  1. 返回源域Workers ->的{​​{1}}标签。将路由设置为Add route。选择您在步骤4和www.source-domain.com/ORIGINAL_PATH中创建的工作程序。

  2. 请花一些时间来消化新设置并确认重定向有效。