使用nginx搭建creates.io镜像(稀疏索引)
2023/12/26 1:03:07
本文主要是介绍使用nginx搭建creates.io镜像(稀疏索引),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在
Rust
开发中,经常需要使用Cargo
从crates.io
下载依赖,而国内几乎没有好用的crates.io镜像,大多都只对crates.io-index
和crates.io
进行了镜像,而最重要的static.crates.io
却没有镜像。迫不得已只能自己搭建。众所周知,Cargo下载依赖,实际分为三步:
- 获取索引(Fetch index)
- 查询下载路径(Redirect location)
- 下载资源(*.crate文件)
因此,搭建crates.io镜像也需要分为三个模块:
- crates.io-index
- crates.io
- static.crates.io
零、启用nginx的缓存功能
注:此处均为与搭建creates.io镜像相关的配置项
http { # 开启全局缓存,并配置存储路径(/var/lib/crates.io)和大小(32g) proxy_cache_path /var/lib/crates.io keys_zone=STATIC:100m levels=1:2 inactive=120h max_size=32g; }
一、缓存creates.io
server { listen 7011; location / { proxy_pass https://crates.io; proxy_ssl_server_name on; proxy_buffering on; proxy_cache STATIC; proxy_cache_valid 301 302 307 308 72h; proxy_cache_valid any 10s; proxy_cache_revalidate on; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; proxy_redirect https://static.crates.io/ http://$host:7012/; } }
此处,我们将http://localhost:7011反向代理到https://crates.io,并对结果进行缓存。其中状态码为301,302,307,308的缓存72小时,其余状态码缓存10秒。
二、缓存static.crates.io
server { listen 7012; location / { proxy_pass https://static.crates.io; proxy_ssl_server_name on; proxy_buffering on; proxy_cache STATIC; proxy_cache_valid 200 72h; proxy_cache_valid 400 502 504 10s; proxy_cache_valid any 1m; proxy_cache_revalidate on; proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; } }
此处,我们将http://localhost:7012反向代理到https://static.crates.io,并对结果进行缓存。
需要注意到在 缓存creates.io 部分,
proxy_redirect
参数,就是将原本重定向目标从https://static.crates.io/
修改为http://$host:7012/
三、缓存creates.io-index
在前几步中,我们已经将一个creates.io
镜像的内容部分搭建完毕,最后就是索引,众所周知,crates.io
是使用git仓库 https://github.com/rust-lang/crates.io-index.git 作为官方索引的,因此我们只需要将这个仓库clone到本地
cd /home/ # 此处将索引clone到/home目录下 git clone https://github.com/rust-lang/crates.io-index.git
然后修改/home/crates.io-index/config.json
,将https://crates.io
修改为我们刚刚的代理地址http://localhost:7011
,除了lo地址也可以用本机的其他ip地址。
sed -i 's+https://crates.io+http://localhost:7011+g' /home/crates.io-index/config.json
最后依然是nginx配置:
server { listen 7010; location /crates.io-index/ { root /home; } }
以上,一个镜像源就配置完成啦~~~
四、在开发环境配置镜像源
修改HOME目录下的.cargo/config.toml文件(也可以是不带后缀名的config文件)如果没有就新建一个。
Linux/Unix系统为
$HOME/.carog/config.toml
Windows系统为$USERPROFILE/.carog/config.toml
内容为:
[source.crates-io] replace-with = 'local' [source.local] registry = "sparse+http://localhost:7010/crates.io-index/"
五、写在最后
目前能够找到的搭建creates.io镜像源的文章,全部都是使用基于git over https
的传统方式,本篇文章则是采用最新的sparse
稀疏索引方式,大幅加快获取包的速度,搭建过程更加便捷。
这篇关于使用nginx搭建creates.io镜像(稀疏索引)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-13用Nginx防范DDoS攻击的那些事儿
- 2024-12-13用Terraform在AWS上搭建简单NGINX服务器指南
- 2024-10-29Nginx发布学习:从入门到实践的简单教程
- 2024-10-28Nginx发布:新手入门教程
- 2024-10-21nginx 怎么设置文件上传最大20M限制-icode9专业技术文章分享
- 2024-10-17关闭 nginx的命令是什么?-icode9专业技术文章分享
- 2024-09-17Nginx实用篇:实现负载均衡、限流与动静分离
- 2024-08-21宝塔nginx新增8022端口方法步骤-icode9专业技术文章分享
- 2024-08-21nginx配置,让ws升级为wss访问的方法步骤-icode9专业技术文章分享
- 2024-08-15nginx ws代理配置方法步骤-icode9专业技术文章分享