不求人,在阿里云上安一个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 XXXXX;

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 XXXXXX;
#subs_filter az320820.vo.msecnd.net nuget.kwok.io;
subs_filter_types *;
set $t $sent_http_location;
more_set_headers -s 302 'Location:http://XXXXX/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://XXXXX/api/v2/package/EntityFramework/6.1.3=>(原本302 到http://az320820.vo.msecnd.net/packages/entityframework.6.1.3.nupkg,这样nginx就无法缓存了,我们通过配置302到其他地方)=>http:/XXXXXX/ng.php?url=/api/v2/package/EntityFramework/6.1.3=>http://XXXXXX/packages/entityframework.6.1.3.nupkg=》(反向代理,下载并缓存包)

4.ng.php代码

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

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

本文参考

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

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

  1. npm安装出错的时候,如何使用国内的镜像!--解决办法

    在前端开发领域,Node已经很普遍了,使用Node就会使用到一些包.所以常用的 npm 就会经常使用得到,但是在使用 npm 安装一些包的过程中,会发现安装的速度会很慢,而且很多时候直接安装不了. 百 ...

  2. Jenkins 插件使用国内镜像源-解决插件下载慢的问题

    问题 我们在Jenkins里面经常会遇到安装插件很慢,这是由于我们使用的是更新中心镜像默认为国外的源.现在我们可以进行设置为国内镜像源,来解决安装插件慢的问题. 解决办法 安装插件localizati ...

  3. Visual Studio 2010 更新NuGet Package Manager出错解决办法

    在Visual Studio 2010的扩展管理器中发现NuGet Package Manger有最新版本更新提示,选择更新安装提示以下错误信息: 2013/4/25 1:11:48 - Micros ...

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

    1. 国内android开源镜像网站 下面是国内几个比較知名的开源网站.我用的是电子科技大学的镜像源,下载速度很快. mirrors.neusoft.edu.cn //东软信息学院 ubuntu.bu ...

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

    spec: containers: - name: nginx image: image: reg.docker.lc/share/nginx:latest imagePullPolicy: IfNo ...

  6. jcenter下载不了时,用国内镜像下载解决

    修改build.gradle,以下是原本的配置信息 buildscript { repositories { google() jcenter() } dependencies { classpath ...

  7. Mirror--镜像断开的解决办法

    如果镜像在搭建一段时候后出现问题,可能存在以下原因: 1. 因为主库或镜像库存在内存压力,导致无法完成镜像日志传送和重做 解决办法:设置数据库最小内存,保证数据库有足够内存完成镜像操作 2. 因为主库 ...

  8. Docker镜像拉取失败或超时的解决办法:添加国内镜像

    $ docker pull php:7.1-fpm-alpine Error response from daemon: Get https://registry-1.docker.io/v2/: n ...

  9. 我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法

    我教你如何解决 Docker 下载 mcr.microsoft.com 镜像慢的办法 一.介绍 最近,我在写有关使用 Jenkins 搭建企业级持续集成环境的文章,准备了四台服务器,企业级别嘛,一台就 ...

随机推荐

  1. 在双系统(Windows与Ubuntu)下删除Ubuntu启动项

    问题概述:因为在自己学习Linux的时候,按照网上的教程错误的删除了Ubuntu的一个内核驱动,导致Ubuntu不能启动.我想到的办法是重新安装系统,重装系统的第一步便是将Ubuntu从电脑中卸载.该 ...

  2. sed教程

    http://jl453625978.blog.163.com/blog/static/86041705201171511624868/

  3. SQL必知必会1-13 读书笔记

    博主不想写字并向你仍来了一堆代码 1-6 SQL——结构化查询语言,Structured Query Language: 基本按列查询: mysql> SELECT prod_id,prod_n ...

  4. 如何用fiddler对ios抓包

    fiddler端设置:(配置好重启fiddler) 1.首先下载安装fiddler,我安装的是fiddler4 2.Tools->Telerik Fiddler Options->HTTP ...

  5. 升级xcode8之后出现报错提示,提示swift版本问题

    最近Xcode升级了,出现了各种蛋疼的错误提示,今天遇到个导入框架出现了提示Swift版本的问题,具体如下: "Use Legacy Swift Language Version" ...

  6. HTML 学习笔记 JQuery(DOM 操作)

    一般来说,DOM操作分为三个方面,即:DOM Core(核心), HTML_DOM 和 CSS_DOM. 1.DOM Core DOM Core 并不专属于JavaScript,任何一种支持DOM的程 ...

  7. Openjudge 1.13-23:区间内的真素数(每日一水)

    总时间限制:  1000ms 内存限制:  65536kB 描述 找出正整数 M 和 N 之间(N 不小于 M)的所有真素数.真素数的定义:如果一个正整数 P 为素数,且其反序也为素数,那么 P 就为 ...

  8. [LeetCode] Concatenated Words 连接的单词

    Given a list of words (without duplicates), please write a program that returns all concatenated wor ...

  9. [LeetCode] Partition Equal Subset Sum 相同子集和分割

    Given a non-empty array containing only positive integers, find if the array can be partitioned into ...

  10. SQLite源程序分析之sqlite3.c

    /****************************************************************************** ** This file is an a ...