8 个版本
0.2.2 | 2024年4月30日 |
---|---|
0.2.1 | 2024年2月19日 |
0.2.0 | 2023年8月9日 |
0.1.4 | 2023年7月2日 |
0.1.0 | 2021年9月22日 |
#30 in HTTP服务器
每月下载量542次
43KB
714 行
crates.io 注册表的缓存HTTP代理服务器
简介
crates-io-proxy
实现了对https://index.crates.io/上的稀疏注册表索引和静态crate文件下载服务器的透明缓存。
实现了两个独立的HTTP代理端点
-
监听
/index/.../{crate}
的HTTP GET请求,将其转发到https://index.crates.io/,并将下载的注册表索引条目作为JSON文本文件缓存在本地文件系统中。 -
监听
/api/v1/crates/{crate}/{version}/download
的HTTP GET请求,将其转发到https://crates.io/,并将下载的crate作为.crate
文件缓存在本地文件系统中。
后续的稀疏注册表索引和crate下载API调用将使用本地缓存的索引条目和crate文件来服务。
作为一个便利的功能,稀疏索引根目录中找到的.config
文件的下载请求将使用一个替换文件提供服务,该文件将crate下载URL更改为指向同一代理服务器。
使用方法
可以使用Cargo的源替换功能来告诉Cargo使用crate注册表镜像。将以下行添加到您的.cargo/config
[source.crates-io]
replace-with = "crates-io-mirror"
[registries.crates-io-mirror]
index = "sparse+http://crates-io-proxy.example.com:3080/index/"
使用静态git索引镜像
crates-io-proxy
也可以作为具有单独基于git的注册表索引的crate文件下载代理服务器使用。
要使用此配置,请从GitHub克隆并重新托管crates.io索引存储库,并将存储库根目录中的"dl"
参数更改为指向crates-io-proxy
服务器
{
"dl": "https://crates-io-proxy.example.com:3080/api/v1/crates",
"api": "https://crates.io"
}
在此配置中,应使用git注册表索引链接
[registries.crates-io-mirror]
index = "https://crates-io-index.example.com/crates-io-index.git"
配置
可以通过命令行选项或环境变量来配置代理服务器。
运行crates-io-proxy --help
以获取以下帮助页面
Usage:
crates-io-proxy [options]
Options:
-v, --verbose print more debug info
-h, --help print help and exit
-V, --version print version and exit
-L, --listen ADDRESS:PORT address and port to listen at (0.0.0.0:3080)
-U, --upstream-url URL upstream download URL (https://crates.io/)
-I, --index-url URL upstream index URL (https://index.crates.io/)
-S, --proxy-url URL this proxy server URL (http://localhost:3080/)
-C, --cache-dir DIR proxy cache directory (/var/cache/crates-io-proxy)
-T, --cache-ttl SECONDS index cache entry Time-to-Live in seconds (3600)
Environment:
INDEX_CRATES_IO_URL same as --index-url option
CRATES_IO_URL same as --upstream-url option
CRATES_IO_PROXY_URL same as --proxy-url option
CRATES_IO_PROXY_CACHE_DIR same as --cache-dir option
CRATES_IO_PROXY_CACHE_TTL same as --cache-ttl option
高级配置
默认情况下,crates-io-proxy
使用内嵌的TLS受信任根证书。可以通过设置native-certs
功能标志,在构建时配置它以使用系统证书存储。
在运行时配置此行为尚不支持。
依赖项
~2.1–9MB
~107K SLoC