日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

使用nginx搭建creates.io镜像(稀疏索引)

發布時間:2023/12/29 windows 43 coder
生活随笔 收集整理的這篇文章主要介紹了 使用nginx搭建creates.io镜像(稀疏索引) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Rust開發中,經常需要使用Cargocrates.io下載依賴,而國內幾乎沒有好用的crates.io鏡像,大多都只對crates.io-indexcrates.io進行了鏡像,而最重要的static.crates.io卻沒有鏡像。迫不得已只能自己搭建。眾所周知,Cargo下載依賴,實際分為三步:

  1. 獲取索引(Fetch index)
  2. 查詢下載路徑(Redirect location)
  3. 下載資源(*.crate文件)

因此,搭建crates.io鏡像也需要分為三個模塊:

  1. crates.io-index
  2. crates.io
  3. 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镜像(稀疏索引)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。