不以我为德,反以我为仇

搭建google搜索反向代理

转载自:http://www.jiechic.com/archives/set-up-a-reverse-proxy-google-search

最近google封锁得比较厉害,技术员最向往的搜索功能都被屏蔽了。安排同事干活的时候,总没有效率,因为同事用百度搜索技术相关内容,总是没法很好的搜到解决办法。

最近,我也有需求在不连VPN的情况下去进行google搜索,鉴于NGINX如此强大,于是我用它来搭建我的google搜索镜像了。

操作原文参考:https://www.centos.bz/2014/06/nginx-proxy-google/

1、申请ssl加密证书

这个,我就不在此文说明了。可以自己去买一个,也可以到startssl中申请一个免费的。

2、升级 NGINX 支持 sub_filter

我的 vps 使用的是军哥的 lnmp 一件安装包。

于是到 nginx 的目录重新编译安装一下 nginx,让它支持 sub_filter,

cd /root/lnmp1.1-full/nginx-1.6.0
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6 --with-http_sub_module
make
make install

重新编译安装之后,添加了 sub_module 模块之后,就支持 sub_filter 配置语法了。

3、添加域名,修改修改网站配置文件

/root/vhost.sh   #军哥添加域名脚本
vi /usr/local/nginx/conf/vhost/xxxx.conf  #添加域名的配置文件

修改文档内容如下所示:

proxy_cache_path  /data/nginx/cache/one  levels=1:2   keys_zone=one:10m max_size=10g;
proxy_cache_key  "$host$request_uri";
server {
listen 80;
server_name www.centos.bz centos.bz;
rewrite ^(.*) https://www.centos.bz$1 permanent;
}
 
upstream google {
 server 74.125.224.80:80 max_fails=3;
 server 74.125.224.81:80 max_fails=3;
 server 74.125.224.82:80 max_fails=3;
 server 74.125.224.83:80 max_fails=3;
 server 74.125.224.84:80 max_fails=3;   
 }
server {
        listen      443;
        server_name  www.centos.bz centos.bz;
         ssl on;
    ssl_certificate /usr/local/nginx/conf/centos.crt;
    ssl_certificate_key /usr/local/nginx/conf/centos.key;
location / {
                proxy_cache one;
                proxy_cache_valid  200 302  1h;
                proxy_cache_valid  404      1m;
                proxy_redirect https://www.google.com/ /;
                proxy_cookie_domain google.com centos.bz;
                proxy_pass              http://google;
                proxy_set_header Host "www.google.com";
                proxy_set_header Accept-Encoding "";
                proxy_set_header User-Agent $http_user_agent;
                proxy_set_header Accept-Language "zh-CN";
                proxy_set_header Cookie "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw";             
                sub_filter www.google.com www.centos.bz;
                sub_filter_once off;
}
}

解释下吧:

1、代码中 xxxxxxx 代替为你自己的域名。
2、这里监听了80和443端口,用了ssl加密,高大上。ssl证书是免费的,startssl,自己去申请个吧。修改证书的位置。
3、定义了个upstream google,放了5个谷歌的ip,如果不这样做,就等着被谷歌的验证码搞崩溃吧。
4、也设置了反向代理缓存,某些资源不用重复去请求谷歌获取,加快搜索速度。
5、proxy_redirect https://www.google.com/ /; 这行的作用是把谷歌服务器返回的302响应头里的域名替换成我们的,不然浏览器还是会直接请求www.google.com,那样反向代理就失效了。
6、proxy_cookie_domain google.com xxxxxxxx; 把cookie的作用域替换成我们的域名。
7、proxy_pass http://google; 反向代理到upstream google,会随机把请求分配到那几个ip。忘记说了,那几个ip可以在自己的vps或服务器上使用nslookup www.google.com获取。
8、proxy_set_header Accept-Encoding “”; 防止谷歌返回压缩的内容,因为压缩的内容我们无法作域名替换。
9、proxy_set_header Accept-Language “zh-CN”;设置语言为中文。
10、proxy_set_header Cookie “PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=zh-CN:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2w1IQ-Maw”; 这行很关键,传固定的cookie给谷歌,是为了禁止即时搜索,因为开启即时搜索无法替换内容。还有设置为新窗口打开网站,这个符合我们打开链接的习惯。
11、sub_filter www.google.com xxxxxxxx;当然是把谷歌的域名替换成我们的了,注意需要安装nginx的sub_filter模块。

4、重启服务器

好了,说明够详细了,最后重启服务,祝各位享受到高质量的谷歌搜索。

/root/lnmp restart
  1. skyice  Windows 7 Google Chrome 38.0.2125.122说道:

    新技能get

    1. 大大的小蜗牛  Windows 7 x64 Edition Google Chrome 39.0.2171.95说道:

      @skyice 慎重使用。

发表评论

电子邮件地址不会被公开, * 为必填项,必须包含中文,不能提交URL。