使用CloudFlare搭建反向代理
使用CloudFlare搭建反向代理
+使用CloudFlare搭建反向代理
使用CloudFlare搭建反向代理
CloudFlare,互联网大善人!
FREE套餐CloudFlare每日提供 10w 请求的免费额度,个人用完全足够,但并不能保证很多人同时使用,强烈建议仅自用
@@ -207,12 +207,12 @@准备
一个可以添加到CloudFlare的域名(可选),主要是CloudFlare的一些域名被墙,导致无法直接访问 创建并配置Workers
创建 Workers
在 Cloudflare 的面板左侧点击 Workers 和 Pages 进入后点击创建按钮
- - + +点击创建Workers按钮
- -名字随便填,我这里就直接填proxy了,然后点击部署
-点击编辑代码进入代码编辑页面
+ +名字随便填,我这里就直接填proxy了,然后点击部署
+点击编辑代码进入代码编辑页面
在这里你有两个选择
- 通用反代(优点:可直接反代任意网站,缺点:容易寄,如果泄露被滥用的几率大)
@@ -235,24 +235,24 @@https://store.steampowered.com 反代的就是 https://store.steampowered.com
访问 https://你的域名/https://api.steampowered.com 反代的就是 https://api.steampowered.com -部署
点击部署
-在下方出现以下提示就可以啦
-访问 https://你的域名 出现下面界面就成功啦
+部署
点击部署
+在下方出现以下提示就可以啦
+访问 https://你的域名 出现下面界面就成功啦
当然,有概率你是会出现网页无法访问,这就是CloudFlare的部分域名被墙了……
这就是需要下一步的原因
绑定域名
注册域名过程略
我们首先要将自己的域名 DNS 托管给 Cloudflare,返回在控制台选择“网站”选项卡,输入你注册的域名,点击继续
- +个人用选择FREE套餐即可,点击继续
- -点击继续前往激活
-点击确认
-将Cloudflare 给的名称服务器填在你注册域名的地方,这里不细说
-填完后点击继续等待名称服务器更新(等待时间在几分钟到几个小时之间,不要急,成功后Cloudflare会发送邮件到你的邮箱)
-刷新后域名的状态变为活动就可以了
-使用域名
继续前往 Workers 和 Pages ,点击进入刚才创建的 Workers 服务
-进入设置,在 域和路由 点击 添加
-点击自定义域
+ +
输入任意的域名前缀+你的域名.例如proxy.example.com , 将example.com替换为你的域名
点击添加域即可点击继续前往激活
+点击确认
+将Cloudflare 给的名称服务器填在你注册域名的地方,这里不细说
+填完后点击继续等待名称服务器更新(等待时间在几分钟到几个小时之间,不要急,成功后Cloudflare会发送邮件到你的邮箱)
+刷新后域名的状态变为活动就可以了
+使用域名
继续前往 Workers 和 Pages ,点击进入刚才创建的 Workers 服务
+进入设置,在 域和路由 点击 添加
+点击自定义域
输入任意的域名前缀+你的域名.例如proxy.example.com , 将example.com替换为你的域名
点击添加域即可然后将 Cloudflare 的域名替换为自己的即可
拓展
即使指定反代依旧有泄露被滥用的风险,那就浅浅加个用户白名单吧(doge)
加了白名单的话通用反代方便一点
@@ -263,8 +263,7 @@指定反代
-
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request));
});
// 域名映射表
const domainMappings = {
"/steam-store": "https://store.steampowered.com",
"/steam-api": "https://api.steampowered.com"
};
const specialCases = {
"*": {
"Origin": "DELETE",
"Referer": "DELETE"
}
};
//IP白名单
const allowedIPs = [
// IPv4 示例
'123.123.123.123',
// IPv6 示例
'2001:0db8:85a3:0000:0000:8a2e:0370:7334'
];
function handleSpecialCases(request) {
const rules = specialCases["*"];
for (const [key, value] of Object.entries(rules)) {
switch (value) {
case "KEEP":
break;
case "DELETE":
request.headers.delete(key);
break;
default:
request.headers.set(key, value);
break;
}
}
}
// 获取用户 IP 地址
function getUserIP(request) {
return request.headers.get('CF-Connecting-IP') || request.headers.get('X-Forwarded-For') || request.connection.remoteAddress;
}
async function handleRequest(request) {
const url = new URL(request.url);
const userIP = getUserIP(request);
// 检查 IP 是否在白名单内
if (!allowedIPs.includes(userIP)) {
return new Response(`
<html>
<head>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f9f9f9;
}
h1 {
font-family: Arial, sans-serif;
color: #333;
text-align: center;
}
</style>
</head>
<body>
<h1>Caused by playing Genshin Impact</h1>
</body>
</html>
`, {
headers: { "Content-Type": "text/html" }
});
}
// 如果是访问根目录就返回一个HTML
if (url.pathname === "/") {
return new Response(`
<html>
<head>
<style>
body {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
margin: 0;
background-color: #f9f9f9;
}
h1 {
font-family: Arial, sans-serif;
color: #333;
text-align: center;
}
</style>
</head>
<body>
<h1>Why don't you play Genshin Impact?</h1>
</body>
</html>
`, {
headers: { "Content-Type": "text/html" }
});
}
const basePath = Object.keys(domainMappings).find(path => url.pathname.startsWith(path));
if (!basePath) {
return new Response("Path not found in domain mappings", { status: 404 });
}
const targetBase = domainMappings[basePath];
const targetPath = url.pathname.slice(basePath.length) + url.search + url.hash;
const targetUrl = new URL(targetPath, targetBase);
const modifiedRequest = new Request(targetUrl, {
headers: request.headers,
method: request.method,
body: request.body,
redirect: 'follow'
});
handleSpecialCases(modifiedRequest);
// 发送请求
const response = await fetch(modifiedRequest);
const modifiedResponse = new Response(response.body, response);
modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');
return modifiedResponse;
}Token验证
相比于IP白名单而言,Token验证不需要频繁改变源码,分享给别人使用方便一点(?
-通用反代
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 MapleLeaf!评论评论
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
+Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
1 | $ hexo new "My New Post" |
More info: Writing
@@ -207,7 +207,7 @@Deploy to remote sites
1 | $ hexo deploy |
More info: Deployment
-npm,pnpm,yarn换源
npm,pnpm,yarn换源以及一些问题
前言
使用npm,pnpm,yarn时经常出现网络问题,选择并配置国内镜像源可以显著提高包的下载速度和稳定性。
+npm,pnpm,yarn换源
npm,pnpm,yarn换源以及一些问题
前言
使用npm,pnpm,yarn时经常出现网络问题,选择并配置国内镜像源可以显著提高包的下载速度和稳定性。
npm
查询当前源
1 | npm get registry |
注意版本:从 nrm v1.4.0 开始,最低支持的 Node 版本是 18
CloudFlare免费内网穿透
CloudFlare免费内网穿透
准备
-
+
- 一个CloudFlare账号,如果没有就去CloudFlare注册
这不废话 - 一个可以添加到CloudFlare的域名
CloudFlare免费内网穿透
CloudFlare免费内网穿透
准备
先咕一下
-使用1Panel阻止SSH爆破
使用1Panel阻止SSH爆破
前言
今日闲来无事,顺手看了一下1Panle的SSH登录日志,不看不知道,一看…….
- +使用1Panel阻止SSH爆破
使用1Panel阻止SSH爆破
前言
今日闲来无事,顺手看了一下1Panle的SSH登录日志,不看不知道,一看…….
+1Panel的登录日志在 主机>SSH管理>登录日志
不过查了一下IP发现这还是华为云自己的IP?
- +安装Fail2ban
不管怎么说还是加个防止SSH爆破的Fail2ban比较好
在1Panel面板 工具箱>Fail2ban 可以看见Fail2ban的运行状态,一般是未安装的,接下来就安装一下
- + -由于我是Ubuntu,我就用Ubuntu进行演示了
安装
-启动
-开机自启动
-查看运行状态
+由于我是Ubuntu,我就用Ubuntu进行演示了
安装
+启动
+开机自启动
+查看运行状态
运行正常即可
配置Fail2ban
接下来返回1Panel的 工具箱>Fail2ban
看到以下界面即可,你可以按需更改相应的配置,基本上保持默认即可,这样就大功告成啦
- -