我这里附加上Cloudflare反向代理设置方法: 优点:只需有CF账号就行,自己专属,不用自己签发证书 缺点:CF在国内有DNS污染,可能无法正常访问
简要步骤: 1,登录到CF https://dash.cloudflare.com/ 2,控制台面板 -> 左侧 Workers 和 Pages -> 创建应用程序 -> 创建 Worker -> 点击保存 -> 点击完成 -> 编辑代码
import HTML from './docker.html';
export default {
async fetch(request) {
const url = new URL(request.url);
const path = url.pathname;
const originalHost = request.headers.get("host");
const registryHost = "registry-1.docker.io";
if (path.startsWith("/v2/")) {
const headers = new Headers(request.headers);
headers.set("host", registryHost);
const registryUrl = `https://${registryHost}${path}`;
const registryRequest = new Request(registryUrl, {
method: request.method,
headers: headers,
body: request.body,
redirect: "follow",
});
const registryResponse = await fetch(registryRequest);
console.log(registryResponse.status);
const responseHeaders = new Headers(registryResponse.headers);
responseHeaders.set("access-control-allow-origin", originalHost);
responseHeaders.set("access-control-allow-headers", "Authorization");
return new Response(registryResponse.body, {
status: registryResponse.status,
statusText: registryResponse.statusText,
headers: responseHeaders,
});
} else {
return new Response(HTML.replace(/{{host}}/g, originalHost), {
status: 200,
headers: {
"content-type": "text/html"
}
});
}
}
}
1
xiaoz 146 天前
我用的 Nexus 3 ,功能很强大,权限粒度可以做到细分。
|
2
kubesre 146 天前 2
|
4
totoro625 146 天前 3
@KINGWAY #3 可能跟我遇到的问题一样,提醒一下后来者
Google 出来的各大教程都没提 Nexus 3 要额外设置一下 Realms 才能正常使用 docker 代理,我也是在犄角旮旯翻出来的 |
5
xiaoz 146 天前 2
@totoro625 #4 ,是的,要设置的地方还蛮多的。我专门写了一个教程: https://blog.xiaoz.org/archives/20916
|
6
wuyiccc 146 天前
harbor 可以配置代理镜像
|
7
Autonomous 146 天前
@kubesre 感谢分享,这个可以使用。
|
8
dockerhub 146 天前
我们官方(冒牌)出的不够好用🐶? dockerhub.icu
|
12
petercui 146 天前
harbor 不香么?
|
13
Tink 146 天前 via Android 2
|
15
huaxing0211 145 天前
import HTML from './docker.html';
Uncaught Error: No such module "docker.html". imported from "worker.js" (Code: 10021) worker.js 同目录下新建了 html 文件,但有错,这个是什么问题? |
16
huaxing0211 145 天前
@huaxing0211
解决了! 删除或是注释掉:import HTML from './docker.html'; return new Response(HTML.replace(/{{host}}/g, originalHost)中,“HTML”变量替换为网页代理即可! |
17
KINGWAY OP @huaxing0211 其实你看我的一楼推荐的那个博客中有详细说明 docker.html 文件, 只是 docker.hmtl 这个文件字数太多, append 无法搞上, 加上忙就忘记说明了.
你改为网页代理其实更加好, 某种方面来说有些 fq 用伪装网站就是这个套路. |
18
yjxjn 145 天前
@huaxing0211 #15
我把 import HTML from './docker.html'; 改成了 import HTML from './index.html'; docker.html 重命名为 index.html ,也是好使的。 |
19
atibm 145 天前 via Android
搭过 docker 代理,自己的 VPS 就是方便,建多个实例,但是吧,导致自己 IP 老被封,影响了博客等,还是继续买商家的用
|