简介
没有什么比网速慢更恐怖的事情了,尤其是在clone的时候,有时候真的是要好久所以我就想到了使用nginx反向代理github
操作
首先你要搭建一个nginx
我一般会选择docker搭建nginx,然后使用docker-compose来启动,下面是我的nginx docker-compose 配置文件
https://github.com/bboysoulcn/awesome-dockercompose/tree/master/nginx
差不多就是上面这个样子,欢迎star fork上面这个项目
之后修改nginx的配置文件,我的配置文件如下
upstream github { server github.com:443; keepalive 16; } server { listen 80; server_name 你的域名; rewrite ^ https://$http_host$request_uri? permanent; access_log /var/log/nginx/github/https_ip.log; error_log /var/log/nginx/github/https_ip_error.log; } server { listen 443; server_name 你的域名; ssl_certificate /cert/github/fullchain1.pem; ssl_certificate_key /cert/github/privkey1.pem; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") #防止搜索引擎收录 { return 403; } location / { proxy_set_header Accept-Encoding ""; proxy_set_header Connection ""; proxy_http_version 1.1; proxy_connect_timeout 10s; proxy_read_timeout 10s; proxy_set_header Host github.com; proxy_hide_header Strict-Transport-Security; #隐藏协议头,避免因为反向代理开启hsts proxy_pass https://github; } access_log /var/log/nginx/github/https_ip.log; error_log /var/log/nginx/github/https_ip_error.log; }
接下来解释下上面的配置
upstream github { server github.com:443; keepalive 16; }
这里upstream 建议填写域名,为什么呢,网上有的是写ip的,但是如果你写ip的话因为github每隔地区的节点ip是不一样的,比如你的服务器是在日本的,但是你写了一个韩国的github ip地址,这就会造成反向代理变得缓慢
server { listen 80; server_name 你的域名; rewrite ^ https://$http_host$request_uri? permanent; access_log /var/log/nginx/github/https_ip.log; error_log /var/log/nginx/github/https_ip_error.log; }
这里的rewrite就是为了强制跳转到https
if ($http_user_agent ~* "qihoobot|Baiduspider|Googlebot|Googlebot-Mobile|Googlebot-Image|Mediapartners-Google|Adsbot-Google|Feedfetcher-Google|Yahoo! Slurp|Yahoo! Slurp China|YoudaoBot|Sosospider|Sogou spider|Sogou web spider|MSNBot|ia_archiver|Tomato Bot") #防止搜索引擎收录 { return 403; }
这里是为了防止搜索引擎收入这个地址,造成地址外泄
其他的配置没有什么可以说的,保持和我一致即可
最后,因为这个只是一个反向代理,所以只能当你碰到比如clone一个项目慢的时候使用
比如当你下载下面这个项目
git clone https://github.com/bboysoulcn/awesome-dockercompose.git
为了加快clone速度,你可以改为你的域名
git clone https://www.example.com/bboysoulcn/awesome-dockercompose.git
使用,但是你想完全当一个镜像站使用,那是不可能的。