• 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 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

  • 相关阅读:
    《人月神话》-读后感2
    自主开发(二)
    自主开发(一)
    《人月神话》-读后感1
    公文流转系统—登录界面
    文件与流课堂实践
    Intern Day22
    Intern Day22
    Intern Day21
    计蒜客T1746
  • 原文地址:https://www.cnblogs.com/yuzukwok/p/4657969.html
Copyright © 2020-2023  润新知