透明代理多个镜像源
代理镜像
在 自动代理软件仓库镜像源,容器免替换镜像源 其实只设置了一家 Alpine 的镜像。如果想把 Alpine、Debian、Ubuntu 等常用的 Linux 发行版都包含进来一定需要绑定多个 Host。
对于 HTTP 很简单,也是 Nginx 擅长的,多加个 server 块的事。但 HTTPS 因为无法解密内容拿不到 Host 信息有些麻烦。
好在要拿到 Host 信息也是 Nginx 以及一众网页服务器需要解决的问题,一个反向代理服务器部署了多个网站,怎么确定来得流量走到哪个上游呢。设计 TLS 的时候留了个 SNI 头这个口子。虽是可选的在未来也是可能加密的,但目前基本都明文传。昨天的 Clash Sniffer 也是读取的这个。
关于 Hosts 设置也有个改动,之前放 Clash 中每次修改都得重启,现在还是转移到系统 /etc/hosts 中,让 clash use-system-hosts: true + skip-src-address: [mirror-ip]。在我的 asuswrt-merlin.ng 固件中可以写到 /jffs/configs/hosts.add 文件。
完整代码在 Homelab/service/cdnmirror at main · enihsyou/Homelab
# Enable SNI inspection
ssl_preread on;
# Use a non-Local DNS server to avoid DNS loop
resolver 1.1.1.1 ipv6=off;
server {
listen 443;
# Using a variable in proxy_pass forces re-resolution of the DNS names
# https://serverfault.com/a/593003/48752
proxy_pass $ssl_preread_server_name:443;
}server {
listen 80;
server_name dl-cdn.alpinelinux.org
deb.debian.org security.debian.org
archive.ubuntu.com
;
location / {
return 302 http://mirrors.cernet.edu.cn$request_uri;
}
}192.168.2.99 dl-cdn.alpinelinux.org
192.168.2.99 deb.debian.org security.debian.org
192.168.2.99 archive.ubuntu.com任务栏上的 Edge 浏览器图标丢失
近一个月一直在忍受任务栏上的 Edge 浏览器图标变成一个通用文件的样式(Blank Icon),有人遇到相同的问题看来不是 个人因素 。
正常来说它是个带有个人资料头像的 Edge 图标,不知道和资料头像有没有关系。
我尝试把所有标签页拖动到拥有正常图标的新浏览器窗口上,惊人的是那个新窗口在我将最后一个有内容的标签页移动过去后,那个新窗口的图标就变成 Blank Icon 了
然后我尝试了个操作,把 Edge 浏览器的 快捷方式 拖到这个 Blank Icon 上,就恢复了,恢复成没有个人资料头像的 Edge 图标。
在 Windows 平台使用上带本地化翻译的 aria2c
某次在 Ubuntu 上运行 aria2c 时发现它居然尊重 LANG 环境变量并带有完整的 zh_CN 翻译信息。可发布在 Windows 的版本因为 没有编译进 gettext 库而不支持本地化。
我就想要么自己编译一版。刚好之前探索 Git for Windows 本地化 了解了 gettext 库,从 aria2c 要求的函数不受支持 (80090302) 错误 中了解到了 aria2c-zero,它倒是声称 - 支持跨平台的 mo 翻译文件加载支持。
下载下来解压尝试,确实可以
$ ./bin/aria2c.exe
指定至少一个 URL。
用法:aria2c [选项] [URI | 磁力链 | torrent文件 | METALINK文件]...
参见“aria2c -h”。
$ eza -T --level 2
R:\aria2-windows-x64
├── bin
│ └── aria2c.exe
└── share
└── locale
└── zh_CN
└── LC_MESSAGES
└── aria2-zero.mo但我把 exe 和 share/locale 复制到 winget install aria2c 的目录就不行了。原因是它会假设自己处在 bin 目录,找 ../share/locale/zh_CN。同时 winget 安装的可执行文件在 $PATH 中都在 Link 目录,所以得这么放。
把 share 放到可执行文件的上层边上,把 Links 目录当做 bin 目录。
$ eza -TD --level 2
C:\Users\enihsyou\AppData\Local\Microsoft\WinGet
├── Links
│ └── aria2c.exe -> C:\Users\enihsyou\AppData\Local\Microsoft\WinGet\Packages\aria2.aria2_Microsoft.Winget.Source_8wekyb3d8bbwe\aria2-1.37.0-win-64bit-build1\aria2c.exe
├── Packages
│ └── aria2.aria2_Microsoft.Winget.Source_8wekyb3d8bbwe
├── Settings
├── share
│ └── locale
│ └── zh_CN
└── State这就正常可以用在 PATH 中的 aria2c 了,但又遇到个问题,只在输出 --version 时返回乱码。
很明显是编码问题,UTF-8 的内容被按 GBK 解析了。恰好因为 管道输出编码 这个 bug,把内容 pipe 出去解析就是正常的。也可以调整输出编码解决,具体原因先不深究了
$ aria2c --help
用法:aria2c [选项] [URI | 磁力链 | torrent文件 | METALINK文件]...
正列出附有标签“#basic”的选项。
参见“aria2c -h#help”以获知所有可用标签。
$ aria2c --version
aria2-zero 鐗堟湰 v2025.04.06-release.1
Copyright (C) 2024 zeromake<a390720046@gmail.com>Copyright (C) 2006, 2019 Tatsuhiro Tsujikawa
鏈▼搴忔槸鑷敱杞欢锛涙偍鍙互鍦ㄨ嚜鐢辫蒋浠跺熀閲戜細鍏竷鐨?GNU閫氱敤鍏叡璁稿彲璇佺殑鏉℃涓嬮噸鏂板垎鍙戝拰/鎴栦慨鏀瑰畠锛?璁稿彲璇佺殑绗?鐗堟垨锛堢敱鎮ㄩ€夋嫨锛変换浣曟洿楂樼増鏈€?
鏈▼搴忕殑鍙戝竷鏄笇鏈涘畠鏈夌敤锛屼絾*涓嶆彁渚涗换浣曟媴淇?锛?鐢氳嚦娌℃湁瀵?閫傞攢鎬?鎴?鐗瑰畾鐢ㄩ€旈€傜敤鎬?鐨勯粯绀轰繚璇併€?鏈夊叧鏇村璇︾粏淇℃伅锛岃鍙傞槄GNU閫氱敤鍏叡璁稿彲璇併€?
** 閰嶇疆 **
TLS: WinTLS
宸插惎鐢ㄧ殑鍔熻兘: Async DNS, BitTorrent, Firefox3 Cookie, GZip, HTTPS, Message Digest, Metalink, XML-RPC, SFTP
鍝堝笇绠楁硶: sha-1, sha-224, sha-256, sha-384, sha-512, md5, adler32
搴? zlib/1.3.1 expat/2.7.1 sqlite3/3.49.0 OpenSSL/3.3.0 c-ares/1.34.4 libssh2/1.11.1
缂栬瘧鍣? MSVC 1943
built by x64-windows
on Apr 6 2025 06:32:42
绯荤粺: Windows Vista (x86_64) (10.0)
鎶ュ憡闂鑷?https://github.com/zeromake/aria2-zero/issues
璁块棶 https://aria2.github.io
# pipe 出去是正常的
$ aria2c --version > a.txt
# 也可以调整编码
$ [Console]::OutputEncoding = [System.Text.Encoding]::UTF8