自建了一些 CDN 节点,特地来分享一下 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
如果你希望学习 CDN 相关知识,那么建议你可以遍历以下软件的说明文档。
NGINX
cURL
Andy1999
V2EX    CDN

自建了一些 CDN 节点,特地来分享一下

  •  
  •   Andy1999 2015 年 12 月 19 日 via iPhone 8247 次点击
    这是一个创建于 3699 天前的主题,其中的信息可能已经有所发展或是发生改变。
    欲想组建自己的 CDN 节点,需要以下东西:
    1.服务器( vps )
    2.Nginx
    3.钱( x
    服务器都是 ss 服务器因此对大陆地区速度不错
    我选择了这些服务器 SLHK SLJP IDCFJP VultrJP ConoHaSG EnzuUS-Los DOUS-Sfo
    服务端的配置为改写的 lnmp 一键包去除 MySQL 和 PHP 部分,配上 Nginx 的关键字替换和 purge 模块实现。
    目前已经能够远程刷新 Cache 但是不能批量提交,要一个节点一个节点清理掉比较复杂。
    能查看当前页面的状态,利用 Nginx 自带的信息可以告诉你这个文件是 HIT 还是 MISS 甚至是 ByPASS 这类。
    参考 URL
    http://www.nnya.cat/images/2015/12/07/b0c282068e6494bfbc26db76e79d6df9.jpg

    不知道怎么实现$url?$key 这类方案来消除缓存。如果大家有什么好的建议 /意见都请提出来。
    45 条回复    2015-12-20 12:47:23 +08:00
    tms
        1
    tms  
       2015 年 12 月 19 日
    写个集中控制界面。带统计功能就完美了。
    Andy1999
        2
    Andy1999  
    OP
       2015 年 12 月 19 日
    @tms Nginx 查了很多资料,没找到有统计功能的
    估计是分析 access log 来生成?
    cevincheung
        3
    cevincheung  
       2015 年 12 月 19 日
    @Andy1999 flumeng 采集日志
    Andy1999
        4
    Andy1999  
    OP
       2015 年 12 月 19 日
    @cevincheung 还是需要第三方软件来的咯。。。 VPS 压力太大了吧
    plqws
        5
    plqws  
       2015 年 12 月 19 日
    感觉这些机房线路的速度并不理想…上海电信用户如是说道
    Andy1999
        6
    Andy1999  
    OP
       2015 年 12 月 19 日
    @plqws

    看看是不是 DNS 解析到北美去了
    boter
        7
    boter  
       2015 年 12 月 19 日 via iPhone
    话说 andy 是高中生么,:)
    Andy1999
        8
    Andy1999  
    OP
       2015 年 12 月 19 日
    @boter 是的
    qiuai
        9
    qiuai  
    PRO
       2015 年 12 月 19 日
    山东联通,访问到的 IP 是 SLHK.
    boter
        10
    boter  
       2015 年 12 月 19 日 via iPhone
    @Andy1999 有时间倒饬真不错,我们上高中时直接作为囚犯围起来了
    Andy1999
        11
    Andy1999  
    OP
       2015 年 12 月 19 日
    @boter 也没有什么时间。。。基本都是抽空弄的
    GPU
        12
    GPU  
       2015 年 12 月 19 日
    图片挂了
    Andy1999
        13
    Andy1999  
    OP
       2015 年 12 月 19 日
    @GPU 能给一下截图吗
    GPU
        14
    GPU  
       2015 年 12 月 19 日
    103.192.177.27
    shyling
        15
    shyling  
       2015 年 12 月 19 日 via iPad
    if ( $args = "key") {
    ngx_purge......
    or
    rewrite /purge/$uri;
    }

    另外图片 404
    GPU
        16
    GPU  
       2015 年 12 月 19 日
    manhere
        17
    manhere  
       2015 年 12 月 19 日 via iPhone
    何不搞搞 apache traffic server 试试?
    tms
        18
    tms  
       2015 年 12 月 19 日
    @Andy1999 反正统计是异步的,压力不是很大。搞个中心服务器接收存储统计数据和分发 purge 指令。
    Andy1999
        19
    Andy1999  
    OP
       2015 年 12 月 19 日
    @manhere CDN 不应该就是用 Nginx/Squid 的吗
    @tms 好 我试试看
    @shyling 谢谢
    @GPU hostus 被 D=-=
    ryd994
        20
    ryd994  
       2015 年 12 月 19 日 via Android
    @shyling if is evil 没有绝对必要不要用
    @Andy1999 proxy_cache_key 就好了,如果已知无法缓存的,用 proxy_no_cache 和 proxy_cache_bypass
    另外请教 idcf 怎么买?电话验证怎么过?
    49
        21
    49  
       2015 年 12 月 19 日
    感觉这些线路也很一般啊 →_→ 国外不考虑抽风因素喵_(:3 ∠)_
    Azure A1 中国做 CDN 应该是最划算的吧, 100Mbps 带宽, 1T 流量。\ ( ·ω·`)/
    Andy1999
        22
    Andy1999  
    OP
       2015 年 12 月 19 日   1
    @ryd994 用日本人的身份买
    Andy1999
        23
    Andy1999  
    OP
       2015 年 12 月 19 日
    @49 买不起 穷
    ryd994
        24
    ryd994  
       2015 年 12 月 19 日 via Android
    @Andy1999 果然还是要有个日本朋友么=、=
    Andy1999
        25
    Andy1999  
    OP
       2015 年 12 月 19 日
    @ryd994 在日本也行
    shyling
        26
    shyling  
       2015 年 12 月 19 日
    @ryd994 本来想说自己写 nginx 模块实现,想了想算了= =,用 nginx.conf 基本的语句没想到其他方法
    ryd994
        27
    ryd994  
       2015 年 12 月 19 日 via Android
    @shyling 多读文档
    shyling
        28
    shyling  
       2015 年 12 月 19 日
    @ryd994 你可以直接说啊?
    ryd994
        29
    ryd994  
       2015 年 12 月 19 日
    @shyling 我说过了啊…………看上面
    proxy_cache_key 就好了,如果已知无法缓存的,用 proxy_no_cache 和 proxy_cache_bypass
    shyling
        30
    shyling  
       2015 年 12 月 19 日
    @ryd994 .....我说的是最后一个啊= =,命令式清除缓存
    ryd994
        31
    ryd994  
       2015 年 12 月 19 日
    @shyling 抱歉看错了,那样确实没什么好办法
    chinabrowser
        32
    chinabrowser  
       2015 年 12 月 19 日
    我这 ownCloud 的 CDN 就用了三个
    IDCF+SL JP+ConoHa SG
    能保证我们这个地区看在线 1080P 流畅
    chinabrowser
        33
    chinabrowser  
       2015 年 12 月 19 日
    @chinabrowser 准确的说也不是 CDN 就是用 iptables 转发了下 80 和 443
    反正都是动态页面 弄 nginx 反而浪费 U
    a1058021348
        34
    a1058021348  
       2015 年 12 月 19 日
    默默的歪楼。。
    记得你以前有 ss 的网站。。。或者相关的群。。。?方便说么。。想用下你们家的

    a1058021348##gmail.com
    Andy1999
        35
    Andy1999  
    OP
       2015 年 12 月 19 日 via iPhone
    Showfom
        36
    Showfom  
    PRO
       2015 年 12 月 19 日
    @chinabrowser 静态页面缓存下来啊,不然你 CDN 的意义何在?
    Andy1999
        37
    Andy1999  
    OP
       2015 年 12 月 19 日 via iPhone
    @Showfom 缓存下来就无视 cookies 啦
    wangluowangwang
        38
    wangluowangwang  
       2015 年 12 月 19 日 via Android
    没 bgp 多线路的中间下载节点。没有的话就得考虑源站到所有加速服务器之间的连接性能。


    cdn 是庞大的投资。
    Andy1999
        39
    Andy1999  
    OP
       2015 年 12 月 20 日 via iPhone
    @wangluowangwang BGP 在上海宜山机房托管了 1U 无线+MLPShinet
    不过就靠这个也没多大用 我只想做海外加速
    iCodex
        40
    iCodex  
       2015 年 12 月 20 日
    为何不用 varnish 。。。
    Andy1999
        41
    Andy1999  
    OP
       2015 年 12 月 20 日 via iPhone
    @iCodex 不会玩 有参考文档吗
    Daniel65536
        42
    Daniel65536  
       2015 年 12 月 20 日   1
    > 目前已经能够远程刷新 Cache 但是不能批量提交,要一个节点一个节点清理掉比较复杂。
    用 post_action 可以解决问题, post_action 可以让你的 nginx 服务器在完成了某个请求后向某个地址发送 GET 或者 POST ,你可以配置 CDN 的某核心主机在你远程访问了 purge 之后代替你向其他节点发送同样的请求。

    比较奇怪的是 post_action 根本没法在 nginx.org 的文档里找到……但是这个功能确实又存在……

    用法大概是:
    location / {
    expires 1d;
    try_files $uri $uri/ =404;
    post_action @tracker;
    }

    location @tracker {
    internal;
    proxy_method GET;
    proxy_pass http://example.com;
    proxy_pass_request_headers off;
    proxy_pass_request_body off;
    }
    这样子。

    我目前是用这个来给 Google Analytics 发信息,从后台做统计……
    akw2312
        43
    akw2312  
       2015 年 12 月 20 日 via Android
    @ryd994 idcf 中只能人工
    日本和 台固 也可以直接
    (但是台手不行 我也是傻了…我疑他的系根本有接好………)
    喔另外一可以多次
    ryd994
        44
    ryd994  
       2015 年 12 月 20 日   1
    @Daniel65536 关于 post_action , Maxim 的原话是“故意没写文档”
    因为这个选项的各种副作用太复杂,不了解 nginx 内部的人乱用很有可能会有不希望的结果。
    你这个用法就属于不建议的用法。因为(至少在上一个问类似问题的人的时候) post_action 的执行是 blocking 的,所以在这段请求的时间里,这个 worker 进程是卡死的。 nginx 现在引入了 multi-thread ,所以这个问题可能已经不是很严重了。
    xiaodaigou
        45
    xiaodaigou  
       2015 年 12 月 20 日 via iPhone
    分享了什么。。。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4463 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 117ms UTC 07:48 PVG 15:48 LAX 23:48 JFK 02:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86