通过Cloudflare Workers反代,实现网站单双日负载均衡

Longli Lv3

通过Cloudflare Workers反代,实现网站单双日负载均衡

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64

// 单日
const SingleDay = 'example_1.com'
// 双日
const DoubleDay = 'example_2.com'
// 一切给CF代理,true/false
const CFproxy = true

// 只改上面,下面不用动

addEventListener('fetch', event => {
let nd = new Date();
if (nd.getDate()%2) {
host = SingleDay
} else {
host = DoubleDay
}
if (!CFproxy) {
let url=new URL(event.request.url);
if (url.protocol == 'http:') {
url.protocol = 'https:'
response = Response.redirect(url.href);
event.respondWith( response );
} else {
url.hostname=host;
let request=new Request(url,event.request);
event.respondWith( fetch(request) )
}
} else {
event.respondWith( fetchAndApply(event.request) );
}
})

async function fetchAndApply(request) {
let response = null;
let url = new URL(request.url);
if (url.protocol == 'http:') {
url.protocol = 'https:'
response = Response.redirect(url.href);
return response;
}
url.host = host;

let method = request.method;
let body = request.body;
let request_headers = request.headers;
let new_request_headers = new Headers(request_headers);

new_request_headers.set('Host', url.host);
new_request_headers.set('Referer', request.url);

let original_response = await fetch(url.href, {
method: method,
body: body,
headers: new_request_headers
});

response = new Response(original_response.body, {
status: original_response.status,
headers: original_response.headers
})

return response;
}
  • 标题: 通过Cloudflare Workers反代,实现网站单双日负载均衡
  • 作者: Longli
  • 创建于 : 2019-01-01 01:00:00
  • 更新于 : 2025-06-23 00:47:22
  • 链接: https://blog.longli.space/2019/01/01/2019010103/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
此页目录
通过Cloudflare Workers反代,实现网站单双日负载均衡