使用nginx反向代理实现镜像站的建立

nginx是轻量开源的服务器web环境搭建工具。

近日在g+发现了镜像站这类好东西,于是产生了轻微的兴趣。而恰巧自己的服务器也是nginx的顺便学习了下。

 

本文主要参考: https://github.com/benzBrake/Shell_Collections/tree/master/ngx_google_deployment以及“ 计算机信息网络国际互联网安全保护管理办法

准备工作:

1.一个可以访问你需要镜像的网站的服务器。比如你想建立一个google镜像,就不可以选用大陆的服务器。

2.安装nginx,且部署了ngx_http_substitutions_filter_module。

在nginx的相关域名的yourdomain.com.conf里填写:

 

server { 
 listen 80;
 listen 443 ssl http2;
 server_name www.yourdomain.com yourdomain;
 ssl on;
 ssl_certificate /usr/local/nginx/conf/ssl/www.yourdomain.com.crt;
 ssl_certificate_key /usr/local/nginx/conf/ssl/www.yourdomain.com.key;
 ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 ssl_prefer_server_ciphers on;
 ssl_session_timeout 10m;
 ssl_session_cache builtin:1000 shared:SSL:10m;
 ssl_buffer_size 1400;
location / { 
proxy_redirect off; 
proxy_pass https://www.google.com/ncr; 
proxy_set_header X-Real-IP $remote_addr; 
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
proxy_set_header Accept-Encoding ""; 
#2,如果没有此项,当通过反向代理访问时会被重定向到google的站点,而不能通过反向代理访问 
proxy_set_header User-Agent "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.49 Safari/537.36"; 
#3,可选,可以通过此项设置google打开的默认界面风格,此处呈现为平板的风格,如果不设置,google会自动根据浏览器判 
proxy_set_header Accept-Language "zh-CN"; 
#4,可选,设置界面呈现的语言,如果不设置,google会自动根据浏览器判断 
proxy_set_header Cookie "PREF=ID=xxxxxx:U=yyyyy:FF=0:LD=zh-CN:NW=1:CR=2:TM=zzzz:LM=mmmmm:GM=1:SG=1:S=-nnnnn"; 
#5,可选,设置cookie处理个性化设置,重点为:NW=1表示结果在新窗口中打开,
#LD=zh-CN表示语言为简体中文,此项将覆盖#4中的设置。(此处某些数据已编辑处理) 
#本句依赖sub_filter 扩展
subs_filter www.google.com www.gotype.tk; 

#6,可选,将页面中的 www.google.com 替换为g.linzhen.net,否则点击某些链接会跳回到google官方。 
##本句依赖sub_filter 扩展
subs_filter_once off; 
} 
}

 

 

若不存在ssl证书可以省略,但可能不安全:

server {
    listen       80;
    server_name  www.yourdomain.com;#此处换成该vps的外网ip(前一步得到的那个),或者自己的网址
     location / {
        proxy_pass https://www.google.com;
        proxy_connect_timeout 120;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        send_timeout 600;
        proxy_redirect    off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        google on;
        google_language "zh-CN";
       }
  }

补充:http的网页可以通过cloudflare的免费cdn实现https加密。