NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
cshenxi
V2EX  ›  NGINX

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

  •  
  •   cshenxi · May 13, 2020 · 6120 views
    This topic created in 2209 days ago, the information mentioned may be changed or developed.

    之前在社区看到过几个大佬发的 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 replies    2020-06-01 09:10:04 +08:00
    zhengfan2016
        1
    zhengfan2016  
       May 13, 2020   ❤️ 1
    其实不用 nginx,直接白嫖 cloudflare 的服务,全球 cdn 加速,自己一分钱都不用出
    https://github.com/hunshcn/gh-proxy
    varrily
        2
    varrily  
       May 13, 2020
    zip 是 302 到了 s3,你是的代理也只是实现了同样的 302 功能。应该是这样。
    cshenxi
        3
    cshenxi  
    OP
       May 13, 2020
    @zhengfan2016 话虽如此。。但是还是想自己反代着玩。。重点是我自己的 vps 速度真的很快,反代了 github 用起来很爽。。应该比 CF 快。。

    @varrily 没太理解大佬的意思。。意思我改一改就能到 s3 了,还是说,实现不了。。
    mengyx
        4
    mengyx  
       May 13, 2020
    @cshenxi Release 的实际下载地址是跳转到 s3 的。如果想实现,那你应该把 s3.amazonaws.com 也反代了。
    而且 release 跳转的时候,你还得修改跳转的的地址到你反代的地址。
    cshenxi
        5
    cshenxi  
    OP
       May 13, 2020
    @mengyx 但是有一点我一直到现在都搞不定,就是跳转到的 s3 不是固定的网址,每次都会变 xxxx-xxx-xxx.s3.amazonaws.com ,每次前面的都不一样,这样怎么反代呢。。如果像 raw.githubusercontent.com 那样是固定的,我应该试试就能弄出来了。。。
    cshenxi
        6
    cshenxi  
    OP
       May 13, 2020
    关于跳转反代的部分,最让我搞不定,无从下手的部分是跳转 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  
       May 13, 2020
    @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
       May 13, 2020
    @mengyx 感谢大佬提点 。。我去找找。。关于 1.,是不是可以考虑。。或者大概率用正则来做匹配之类的?
    mengyx
        9
    mengyx  
       May 13, 2020   ❤️ 1
    @cshenxi 差不多吧 搜一下 “nginx 泛解析” 挺多文章的
    cshenxi
        10
    cshenxi  
    OP
       May 13, 2020
    @mengyx 感谢大佬!!我再去学习学习
    love
        11
    love  
       May 13, 2020
    有 http 代理形式不好吗为啥要反代?
    cshenxi
        12
    cshenxi  
    OP
       May 14, 2020
    @love http 代理是指代理访问吗。。有时候想让别人访问快点。。或者在其他地方自己不方便 http 。。如果反代就非常方便了。。
    neteroster
        13
    neteroster  
       May 14, 2020 via Android
    cshenxi
        14
    cshenxi  
    OP
       May 14, 2020
    @neteroster 谢谢大佬,我看了这个,然后拉下来观摩了一下。。发现 nginx 好像只被用来当作显示网页的工具。。主要是靠 python 实现的吧。。这种我玩不来唉。。只想搞一个 nginx 的简单反代。。
    cshenxi
        15
    cshenxi  
    OP
       May 14, 2020
    感谢楼上各位大佬的回复,果然还是我对 nginx 太萌新了。。把 proxy_set_header Host 改掉就实现了,再次感谢大家支招!
    loveqianool
        17
    loveqianool  
       Jun 1, 2020
    能把完整配置发一下吗?我也想搞个反代自用.
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1094 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 43ms · UTC 23:28 · PVG 07:28 · LAX 16:28 · JFK 19:28
    ♥ Do have faith in what you're doing.