萌新求教关于 NGINX 反代 github,实现 release 下载加速的问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cshenxi
V2EX    NGINX

萌新求教关于 NGINX 反代 github,实现 release 下载加速的问题

  •  
  •   cshenxi 2020-05-13 20:47:48 +08:00 5577 次点击
    这是一个创建于 1986 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前在社区看到过几个大佬发的 github 镜像站的地址,感觉甚是好用,于是自己也想整着玩。。
    无奈半路出家,很多东西都是网上直接找教程啃现成的,所以学艺不精,也都是一些小兴趣,完全从头学 nginx 估计也学不下去。。厚着脸皮过来伸手请教,望各位大佬赐教!!
    直接贴代码吧,下面是我现在用的 nginx 的配置文件,可以实现反代 github.comraw.githubusercontent.com 的反代,点 raw 代码,也不会跳去 raw.githubusercontent.com 站,而是转成自己的域名显示出来的。。但是如果去 release 页面下载 zip 或 ext 之类的包,则最终会直接从 s3.amazonaws.com 之类的地方下载,如何实现 release 部分也反代下载呢?

    server { listen 443 ssl http2 reuseport; server_name MY.DOMAIN.COM; ssl_certificate /etc/nginx/ssl/certificate.cer; ssl_certificate_key /etc/nginx/ssl/certificate.key; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_timeout 1d; ssl_ciphers EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; ssl_session_tickets on; ssl_stapling on; resolver 8.8.8.8; proxy_intercept_errors on; recursive_error_pages on; location / { proxy_cache_valid 200 301 302 1d; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Referer https://github.com/; proxy_set_header Host github.com; proxy_pass https://github.com/; error_page 302 = @error_page_302; } location @error_page_302 { proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Referer https://github.com/; proxy_set_header Host raw.githubusercontent.com; set $download $upstream_http_location; proxy_pass $download; } } 

    在此谢过各位大佬了!!

    17 条回复    2020-06-01 09:10:04 +08:00
    zhengfan2016
        1
    zhengfan2016  
       2020-05-13 21:03:26 +08:00   1
    其实不用 nginx,直接白嫖 cloudflare 的服务,全球 cdn 加速,自己一分钱都不用出
    https://github.com/hunshcn/gh-proxy
    varrily
        2
    varrily  
       2020-05-13 21:06:55 +08:00
    zip 是 302 到了 s3,你是的代理也只是实现了同样的 302 功能。应该是这样。
    cshenxi
        3
    cshenxi  
    OP
       2020-05-13 21:33:15 +08:00
    @zhengfan2016 话虽如此。。但是还是想自己反代着玩。。重点是我自己的 vps 速度真的很快,反代了 github 用起来很爽。。应该比 CF 快。。

    @varrily 没太理解大佬的意思。。意思我改一改就能到 s3 了,还是说,实现不了。。
    mengyx
        4
    mengyx  
       2020-05-13 21:41:22 +08:00
    @cshenxi Release 的实际下载地址是跳转到 s3 的。如果想实现,那你应该把 s3.amazonaws.com 也反代了。
    而且 release 跳转的时候,你还得修改跳转的的地址到你反代的地址。
    cshenxi
        5
    cshenxi  
    OP
       2020-05-13 21:51:04 +08:00
    @mengyx 但是有一点我一直到现在都搞不定,就是跳转到的 s3 不是固定的网址,每次都会变 xxxx-xxx-xxx.s3.amazonaws.com ,每次前面的都不一样,这样怎么反代呢。。如果像 raw.githubusercontent.com 那样是固定的,我应该试试就能弄出来了。。。
    cshenxi
        6
    cshenxi  
    OP
       2020-05-13 21:54:54 +08:00
    关于跳转反代的部分,最让我搞不定,无从下手的部分是跳转 s3 部分的网址每次都会变,例如
    `https://github.com/ginuerzh/gost/releases/download/v2.11.0/gost-linux-amd64-2.11.0.gz`
    直接右键得到这样一个链接
    点击后会跳转到
    `https://github-production-release-asset-2e65be.s3.amazonaws.com/xxxxxxxxxxxxxx`
    后面像乱码一样也非常多一长串,重点是前面的 s3 之前的部分每次也会变。。那我要怎么处理呢?
    mengyx
        7
    mengyx  
       2020-05-13 21:58:50 +08:00
    @cshenxi 大概想到两种方案
    1. 用泛域名绑定(配置方法自行搜索)
    实现 xxx.s3.amazonaws.com/any-path?any-query => xxx.your-domain.com/any-path?any-query

    2. 在 Path 里面传递子域名信息
    xxx.s3.amazonaws.com/any-path?any-query => your-domain.com/xxx/any-path?any-query
    cshenxi
        8
    cshenxi  
    OP
       2020-05-13 22:03:08 +08:00
    @mengyx 感谢大佬提点 。。我去找找。。关于 1.,是不是可以考虑。。或者大概率用正则来做匹配之类的?
    mengyx
        9
    mengyx  
       2020-05-13 22:14:58 +08:00   1
    @cshenxi 差不多吧 搜一下 “nginx 泛解析” 挺多文章的
    cshenxi
        10
    cshenxi  
    OP
       2020-05-13 22:42:31 +08:00
    @mengyx 感谢大佬!!我再去学习学习
    love
        11
    love  
       2020-05-13 23:32:03 +08:00
    有 http 代理形式不好吗为啥要反代?
    cshenxi
        12
    cshenxi  
    OP
       2020-05-14 00:00:48 +08:00
    @love http 代理是指代理访问吗。。有时候想让别人访问快点。。或者在其他地方自己不方便 http 。。如果反代就非常方便了。。
    neteroster
        13
    neteroster  
       2020-05-14 06:39:03 +08:00 via Android
    cshenxi
        14
    cshenxi  
    OP
       2020-05-14 10:50:35 +08:00
    @neteroster 谢谢大佬,我看了这个,然后拉下来观摩了一下。。发现 nginx 好像只被用来当作显示网页的工具。。主要是靠 python 实现的吧。。这种我玩不来唉。。只想搞一个 nginx 的简单反代。。
    cshenxi
        15
    cshenxi  
    OP
       2020-05-14 15:50:54 +08:00
    感谢楼上各位大佬的回复,果然还是我对 nginx 太萌新了。。把 proxy_set_header Host 改掉就实现了,再次感谢大家支招!
    loveqianool
        17
    loveqianool  
       2020-06-01 09:10:04 +08:00
    能把完整配置发一下吗?我也想搞个反代自用.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2942 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 13:35 PVG 21:35 LAX 06:35 JFK 09:35
    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