使用nginx搭建creates.io鏡像的教程詳解
在Rust開發(fā)中,經(jīng)常需要使用Cargo從crates.io下載依賴,而國(guó)內(nèi)幾乎沒(méi)有好用的crates.io鏡像,大多都只對(duì)crates.io-index和crates.io進(jìn)行了鏡像,而最重要的static.crates.io卻沒(méi)有鏡像。迫不得已只能自己搭建。眾所周知,Cargo下載依賴,實(shí)際分為三步:
- 獲取索引(Fetch index)
- 查詢下載路徑(Redirect location)
- 下載資源(*.crate文件)
因此,搭建crates.io鏡像也需要分為三個(gè)模塊:
- crates.io-index
- crates.io
- static.crates.io
零、啟用nginx的緩存功能
注:此處均為與搭建creates.io鏡像相關(guān)的配置項(xiàng)
http { # 開啟全局緩存,并配置存儲(chǔ)路徑(/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,并對(duì)結(jié)果進(jìn)行緩存。其中狀態(tài)碼為301,302,307,308的緩存72小時(shí),其余狀態(tài)碼緩存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,并對(duì)結(jié)果進(jìn)行緩存。
需要注意到在 緩存creates.io 部分,proxy_redirect參數(shù),就是將原本重定向目標(biāo)從https://static.crates.io/修改為http://$host:7012/
三、緩存creates.io-index
在前幾步中,我們已經(jīng)將一個(gè)creates.io鏡像的內(nèi)容部分搭建完畢,最后就是索引,眾所周知,crates.io是使用git倉(cāng)庫(kù) https://github.com/rust-lang/crates.io-index.git 作為官方索引的,因此我們只需要將這個(gè)倉(cāng)庫(kù)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地址也可以用本機(jī)的其他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; } }
以上,一個(gè)鏡像源就配置完成啦~~~
四、在開發(fā)環(huán)境配置鏡像源
修改HOME目錄下的.cargo/config.toml文件(也可以是不帶后綴名的config文件)如果沒(méi)有就新建一個(gè)。
Linux/Unix系統(tǒng)為 $HOME/.carog/config.toml
Windows系統(tǒng)為 $USERPROFILE/.carog/config.toml
內(nèi)容為:
[source.crates-io] replace-with = 'local' [source.local] registry = "sparse+http://localhost:7010/crates.io-index/"
五、寫在最后
目前能夠找到的搭建creates.io鏡像源的文章,全部都是使用基于git over https的傳統(tǒng)方式,本篇文章則是采用最新的sparse稀疏索引方式,大幅加快獲取包的速度,搭建過(guò)程更加便捷。
另外,對(duì)于索引的更新,可以通過(guò)shell腳本+crontab定時(shí)任務(wù)來(lái)完成自動(dòng)更新:
#!/usr/bin/sh cd /home/crates.io-index/ git pull
保存為/home/crates.io-index/update-index.sh,并添加執(zhí)行權(quán)限:
chmod 755 /home/crates.io-index/update-index.sh
添加定時(shí)任務(wù):
# crontab -e 0 * * * * /home/crates.io-index/update-index.sh > /home/crates.io-index/update-index.log 2>&1 &
到此這篇關(guān)于使用nginx搭建creates.io鏡像的教程詳解的文章就介紹到這了,更多相關(guān)nginx搭建creates.io鏡像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
nginx代理轉(zhuǎn)發(fā)報(bào)錯(cuò)405?Method?Not?Allowed解決
這篇文章主要為大家介紹了解決nginx代理轉(zhuǎn)發(fā)報(bào)錯(cuò)405?Method?Not?Allowed解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Nginx如何限制IP訪問(wèn)只允許特定域名訪問(wèn)
我們?cè)谑褂玫臅r(shí)候會(huì)遇到很多的惡意IP攻擊,這個(gè)時(shí)候就要用到Nginx 禁止IP訪問(wèn)了,下面這篇文章主要給大家介紹了關(guān)于Nginx如何限制IP訪問(wèn)只允許特定域名訪問(wèn)的相關(guān)資料,需要的朋友可以參考下2022-07-07Nginx實(shí)現(xiàn)異步訪問(wèn)mysql的配置方法
這篇文章主要介紹了Nginx實(shí)現(xiàn)異步訪問(wèn)mysql的配置方法,本文先是講解了安裝配置方法,然后給出了使用方法,需要的朋友可以參考下2015-06-06同一臺(tái)服務(wù)器安裝多個(gè)Nginx的方法總結(jié)
在同一臺(tái)服務(wù)器上安裝多個(gè)nginx完全沒(méi)有問(wèn)題,但有些地方是需要注意的,這篇文章為大家整理了一些常會(huì)遇到的問(wèn)題以及解決方法,需要的可以參考一下2023-08-08