之前在社区看到过几个大佬发的 github 镜像站的地址,感觉甚是好用,于是自己也想整着玩。。
无奈半路出家,很多东西都是网上直接找教程啃现成的,所以学艺不精,也都是一些小兴趣,完全从头学 nginx 估计也学不下去。。厚着脸皮过来伸手请教,望各位大佬赐教!!
直接贴代码吧,下面是我现在用的 nginx 的配置文件,可以实现反代 github.com 和 raw.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;
    }
}
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.