背景
- CF 的 *.workers.dev 域名不适合直接使用,一种方案是使用一台服务器反向代理它
- 反向代理后,不希望 *.workers.dev 域名还能被搜索引擎访问,这样对 SEO 不好
方案
- 反代服务器代理 Workers 请求,同时添加标识 Header
- Worker 检测请求是否来自可信代理,直连 Workers 返回禁止访问提示
反代服务器配置
- 在 Nginx 反代配置中,添加标识 Header:proxy_set_header X-Proxy-Source hello;
- hello 可以自行修改
- 1Panel 可以在反向代理管理中的 “源文” 处修改
Worker 端逻辑
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const fromProxy = request.headers.get('X-Proxy-Source') === 'proxy'
if (!fromProxy && request.url.includes('.workers.dev')) {
return new Response(
`禁止直接访问!`,
{
status: 403,
headers: {
'Content-Type': 'text/plain; charset=utf-8',
'Cache-Control': 'no-store'
}
}
)
}
}
效果
- 用户直连 workers.dev,403 + 提示文案
- 用户访问反代域名 → 反代 → Worker,正常返回业务逻辑