不求人,在阿里云上安一个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. inotify+rsync实现实时同步部署

    1.1.架构规划 1.1.1架构规划准备 服务器系统 角色 IP Centos6.7 x86_64 NFS服务器端(NFS-server-inotify-tools) 192.168.1.14 Cen ...

  2. Linux系统下面挂载u盘

    1.先插好u盘到Linux服务器,然后查看u盘挂载到哪个目录下面. [root@localhost ~]# /sbin/fdisk -l 2.挂载到u目录下面 [root@localhost ~]# ...

  3. STM32C8T6 JTAG使用到PB3|PB4|PA13|PA14|PB15端口做普通IO时,需禁止JTAG!

    GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIO ...

  4. POJ 3370. Halloween treats 抽屉原理 / 鸽巢原理

    Halloween treats Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 7644   Accepted: 2798 ...

  5. S5PV210_流水灯

    1.整体思路:把相应的配置数据写入相应的寄存器,控制GPIO电平(Led.s)——运用工程管理Makefile编译.链接文件(由Led.s编译得到led.bin,该文件用于USB启动方式点亮LED,若 ...

  6. 最强 Android Studio 使用小技巧和快捷键

    写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本 ...

  7. 个人CTF资源聚合

    i春秋 幻泉 CTF入门课程笔记 视频地址 能力 思维能力 快速学习能力 技术能力 基础 编程基础 (c语言 汇编语言 脚本语言) 数学基础 (算法 密码学) 脑洞 (天马行空的想象推理) 体力耐力( ...

  8. atom无法安装插件的解决方法之一

    atom通过setting中无法下载插件,通过apm也无法下载插件,可能是网络.config配置的问题,不好解决. 下面的方法全手动,基本属于万金油方法: 1,在atom的setting页面中点击op ...

  9. [LeetCode] Reverse Linked List 倒置链表

    Reverse a singly linked list. click to show more hints. Hint: A linked list can be reversed either i ...

  10. [LeetCode] Palindrome Partitioning II 拆分回文串之二

    Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...