跳转至

反向代理实现Github加速

有时候服务器不好连接github,这样clone代码就很麻烦,可以在能访问GitHub的服务器上搭建Nginx反向代理来解决这一问题。

目前的nginx配置文件仅尝试过下载raw和clone代码:

raw.githubusercontent

server {
    listen 80;
    server_name yourdomain.com;

    location /github/raw/ {
        proxy_pass https://raw.githubusercontent.com/;
        proxy_redirect off;

        # 保留原始 Host 和请求头
        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 X-Forwarded-Proto $scheme;

        # 设置 CORS 跨域头
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers '*';

        # 对预检请求立即返回 204
        if ($request_method = OPTIONS ) {
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }
    }

}

github.com

记得使用certbot做成https。

server {
    listen 80;
    server_name github.yourdomain.com;  # 你自定义的域名

    location / {
        proxy_pass https://github.com/;
        proxy_redirect off;

        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 X-Forwarded-Proto $scheme;

        # 跨域处理,仅供浏览器访问用(clone 用不上)
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
        add_header Access-Control-Allow-Headers '*';

        # OPTIONS 预检
        if ($request_method = OPTIONS ) {
            add_header Content-Length 0;
            add_header Content-Type text/plain;
            return 204;
        }
    }
}