摸鱼时光发现了一篇折腾 VPS 的博客,上面写着用 nginx 反代 GitHub,可以用于 GitHub 的下载加速,并且说理论上可以做任何网站的镜像。于是我也简单操作了一下。

直接看他的吧

操作步骤

  1. 环境安装

    用 nginx 反向代理,自然需要安装 nginx 了,我这里使用的宝塔面板一键安装的 LNMP 环境。

  2. 准备一个域名并且解析到服务器上。

  3. 新建一个网站。

  4. 部署 SSL 证书,宝塔面板一键申请即可。

  5. 添加反向代理。

完成后,就可以通过域名访问 GitHub 了。

缺陷

但是这种方还是有很多缺点,比如说不支持 git clone 命令,只能通过点击页面上的 Download ZIP 来下载代码。

其实在这篇博客里也提供了反向代理的配置文件,并且这种方式是支持 git clone 的,但是不支持页面上的搜索功能,可能是少配置了什么。

所以在搜索和 git clone 之间我选择了搜索,其实我觉得是可以兼得的,等我研究研究再说。

除此之外像是图片等资源也是无法正常显示的,因为它来自别的地方。

登录账户也别想了,这只是用来下载的。

使用方法

如果你看到了 https://github.com/Hello/Cuffs 这样的链接,但是你打不开。那么你可以尝试把 github.com 换成 github.dijk.eu.org 。在新的页面点击下载按钮进行代码下载。

除此之外,我还反代了 Google 搜索,大家可以使用 https://google.cuffs.cf 访问谷歌。

youtube 和 谷歌学术的反代尝试都失败了,看了一些博客感觉很复杂,放弃了。

总结

记录一下反代过程

总体来说就是反代两个地址,分别是

Nginx 配置文件如下:

server {
	#省略
    #反代配置
    location ^~ / {
        proxy_pass https://github.com;
        proxy_set_header Host github.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;
        add_header X-Cache $upstream_cache_status;
        #Set Nginx Cache

        #解决pjax问题
        proxy_hide_header x-pjax-url;
        add_header x-pjax-url "https://github.dijk.eu.org$request_uri";

        #raw替换
        proxy_redirect https://raw.githubusercontent.com https://raw-github.dijk.eu.org;

        proxy_set_header Accept-Encoding "";

        sub_filter_once off;

        sub_filter "//github.com" "//github.dijk.eu.org";
        sub_filter "//raw.githubassets.com" "//raw-github.dijk.eu.org";

        set $static_filexskBQvHR 0;
        if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" ) {
            set $static_filexskBQvHR 1;
            expires 12h;
        }
        if ( $static_filexskBQvHR = 0 ) {
            add_header Cache-Control no-cache;
        }
    }
	#省略
}
server {
	#省略
    #raw反代配置
    location ^~ / {
        proxy_pass https://raw.githubusercontent.com;
        proxy_set_header Host raw.githubusercontent.com;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header REMOTE-HOST $remote_addr;

        add_header X-Cache $upstream_cache_status;

        #proxy_hide_header content-security-policy;
        #proxy_hide_header Strict-Transport-Security;
        #proxy_hide_header set-cookie;
        #proxy_hide_header x-pjax-url;

        #Set Nginx Cache
        set $static_fileHDokVEBC 0;
        if ( $uri ~* "\.(gif|png|jpg|css|js|woff|woff2)$" ) {
            set $static_fileHDokVEBC 1;
            expires 12h;
        }
        if ( $static_fileHDokVEBC = 0 ) {
            add_header Cache-Control no-cache;
        }
    }
	#省略
}