nuget国内镜像的解决办法

不求人,在阿里云上安一个nuget镜像站,这样就能愉快编程了。

主要是利用nginx 的反向代理+缓存功能+响应文本的替换

proxy_cache_path /data/nuget-cache levels=1:2 keys_zone=nuget-cache:20m max_size=10g inactive=168h;

server{
listen 80;
server_name nuget.kwok.io;

location /packages/{
proxy_ignore_headers Set-Cookie Cache-Control;
proxy_hide_header Cache-Control;
proxy_hide_header Set-Cookie;
proxy_pass http://az320820.vo.msecnd.net;
proxy_cache nuget-cache;
proxy_cache_valid 200 302 168h;

}

location /{
proxy_ignore_headers Set-Cookie Cache-Control;
proxy_hide_header Cache-Control;
proxy_hide_header Set-Cookie;
#proxy_set_header Accept-Encoding "";
proxy_pass http://www.nuget.org;
proxy_cache nuget-cache;
proxy_cache_valid 200 302 168h;
subs_filter www.nuget.org nuget.kwok.io;
#subs_filter az320820.vo.msecnd.net nuget.kwok.io;
subs_filter_types *;
set $t $sent_http_location;
more_set_headers -s 302 ‘Location:http://blog.kwok.io/ng.php?url=$uri‘;
}

}

核心代码介绍

1.利用nginx 反向代理 将个人域名的请求都指向nuget.org

2.nginx 使用subs_filter模块(需要安装第三方模块) 将响应请求内容中所有nuget.org文本替换为自己的域名

3.nuget里包 最终的下载地址是通过302调整到CDN上的,这里我没有很好的办法通过nginx配置缓存。采用的方式 再次302 到自己的动态网站上,用php语言处理传入的内容,再次302到设定的网址,该网址可以缓存内容。

(nuget Api返回的下载包地址)http://nuget.kwok.io/api/v2/package/EntityFramework/6.1.3=>(原本302 到http://az320820.vo.msecnd.net/packages/entityframework.6.1.3.nupkg,这样nginx就无法缓存了,我们通过配置302到其他地方)=>http://blog.kwok.io/ng.php?url=/api/v2/package/EntityFramework/6.1.3=>http://nuget.kwok.io/packages/entityframework.6.1.3.nupkg=》(反向代理,下载并缓存包)

4.ng.php代码

<?php
$a=$_REQUEST[‘url‘];
$p=strtolower(implode(‘.‘, array_slice(explode(‘/‘, $a),-2)).‘.‘);
header("Location:http://nuget.kwok.io/packages/".$p.nupkg);
?>

5.问题 各个接口的缓存时间策略的优化,CDN服务地址是否会频繁变动

本文参考

http://www.cnblogs.com/dudu/p/4597351.html @dudu

时间: 2024-08-07 20:14:29

nuget国内镜像的解决办法的相关文章

让pip使用国内镜像,解决下载速度慢的问题

对于Python开发用户来讲,PIP安装软件包是家常便饭.但国外的源下载速度实在太慢,浪费时间.而且经常出现下载后安装出错问题.所以把PIP安装源替换成国内镜像,可以大幅提升下载速度,还可以提高安装成功率. 国内源: 新版ubuntu要求使用https源,要注意. 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里云:http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 https://pypi.mirrors.us

Android SDK使用国内镜像站,解决下载速度慢无法更新?

1. 国内android开源镜像站点 以下是国内几个比较知名的开源站点,我用的是电子科技大学的镜像源,下载速度非常快. mirrors.neusoft.edu.cn //东软信息学院 ubuntu.buct.edu.cn/ubuntu.buct.cn //北京化工大学 mirrors.opencas.cn (mirrors.opencas.org/mirrors.opencas.ac.cn) //中国科学院开源协会 sdk.gdgshanghai.com 端口:8000 //上海GDG镜像服务器

windows上编译caffe时,VisualStudio一直正在还原nuget程序包的解决办法

参考  https://www.cnblogs.com/lonelyxmas/p/10333601.html 另外还修改了nuget的配置文件中packageSources,参考cnblog的nuget源路径 原文地址:https://www.cnblogs.com/y00111592/p/11296911.html

K8S 创建rc 时 不适用本地镜像的解决办法

spec: containers: - name: nginx image: image: reg.docker.lc/share/nginx:latest imagePullPolicy: IfNotPresent #或者使用Never 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/9480855.html

docker官方镜像修改为国内镜像

参考:https://www.cnblogs.com/icebutterfly/p/9489133.html 使用docker拉取镜像时,会出现链接超时错误.因为官方镜像访问速度太慢,所以报错,修改为国内镜像可以解决这个问题,操作如下: 在linux系统上,修改 /etc/docker/daemon.json 文件配置1.执行命令,进入daemon.json配置文件 vim /etc/docker/daemon.json 2.修改配置文件为(可自行加减国内镜像地址),然后保存 { "regist

Python pip 国内镜像大全及使用办法

最近写了一篇关于"微软开源分布式高性能GB框架LightGBM安装使用"的文章,有小伙伴安装python环境遇到了问题.我个人也尝试安装了一下,确实遇到了很多问题.最关键的一个就是使用pip安装时,"https://pypi.python.org/simple/scipy/"访问不了了,无法安装.刚好最近使用Nodejs的NPM时也是遇到类似的问题,解决的办法是使用国内镜像,于是开找. 国内镜像 http://pypi.douban.com/simple/ 豆瓣 h

VS2013 此模板尝试加载组件程序集”NuGet.VisualStudio.interop,Version=1.0.0.0 的解决办法 ZT

情景再现 使用VS2013新建ASP.NET MVC项目时,出现下面的错误: 具体错误信息: 错误: 此模板尝试加载组件程序集 “NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”.有关此问题和如何启用此模板的详细信息,请参见有关“自定义项目模板”的文档. 分析错误 既然错误信息提示模板尝试加载组件程序集,那说明NuGet.VisualStudio.Inter

SQL SERVER镜像配置,无法将 ALTER DATABASE 命令发送到远程服务器实例的解决办法

环境:非域环境 因为是自动故障转移,需要加入见证,事务安全模式是,强安全FULL模式 做到最后一步的时候,可能会遇到 执行( ALTER DATABASE [mirrortest] SET WITNESS = 'TCP://xxxx:5022' -)报错的解决方法 消息 1456,级别 16,状态 3,第 4 行 无法将 ALTER DATABASE 命令发送到远程服务器实例 'TCP://xxx:5022'.数据库镜像配置未更改.请确保该服务器已连接,然后重试. 一直尝试一直出错,查了很多资料

NuGet Package Explorer上传时报:failed to process request:&#39;Method Not Allowed&#39;错误解决办法

相关日志:PUT /api/v2/package - 1000 -  NuGet+Package+Explorer/3.15.0.0+(Microsoft+Windows+NT+6.2.9200.0) - 405 0 0 0 解决办法Web.config里面加入设置: <system.webServer> <modules>     <remove name="WebDAVModule" />   </modules>   <han