使用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加密。