已经有不少人做了类似的站点,大部分都没处理好几个问题..比如谷歌的一些图片和js放在ssl.gstatic.com这个域名上,虽然没加载出来也不会对搜索有什么影响,但看着chrome一直转圈,非常不爽。
一个处理的比较好的网站wen.lu,不管是速度还是各方面都比较好.. 但缺点就是人用的比较多,偶尔会出现要输验证码的情况,花了一天的时间,自己折腾了下反向代理谷歌。

nginx安装

1
2
3
4
5
6
7
8
9
10
11
12
13
cd /tmp
git clone git://github.com/yaoweibin/ngx_http_substitutions_filter_module.git # nginx 的过滤器模块(比http_sub_module更加灵活)
wget http://nginx.org/download/nginx-1.7.7.tar.gz
tar -xzvf nginx-1.7.7.tar.gz
cd /tmp/nginx-1.7.7
./configure \
--prefix=/www/wdlinux/nginx \ # 安装位置
--with-http_ssl_module \
--with-http_sub_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--add-module=/tmp/ngx_http_substitutions_filter_module # 添加nginx过滤器模块
make & make install

安装上面的步骤安装好nginx,如果中途遇到什么报错,请google。


配置反向代理

配置文件

直接上配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
server {
listen 443;
server_name sqzr.cc;
ssl on;
ssl_certificate xxx.crt; # crt 位置
ssl_certificate_key xxx.key; # key 位置

location / {
# 反向代理缓存配置
proxy_cache_key $scheme://$host$request_uri;
proxy_temp_path /home/sqzrproxy_cache_tmp;
proxy_cache_path /home/sqzrproxy_cache levels=1:2 keys_zone=sqzrproxy:20m inactive=10d max_size=2g;
proxy_cache sqzrproxy;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 404 1m;
# end 反向代理缓存配置
expires 30d; # 用户游览器缓存时间
proxy_redirect https://www.google.com/ /;
proxy_cookie_domain google.com sqzr.cc;
proxy_pass http://173.194.38.69; # 反代的google一个ip
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"; # 使用此cookie 谷歌在搜索结果打开的时候会弹出新窗口
proxy_set_header Cookie "PREF=ID=a55d9a4143345dbb:FF=0:TM=1414914150:LM=1414914150:S=Sm6aRXOASTr7rVM9;NID=67=lFnfhba9BOH4rXNaxA0ieI_XSHv3Mqu9scHN-Byu5sgdy2DAtb_SfC8XVYJAtREoKDJk3M54tGBZK1cCM0TGkJ_yM7Eqrxk2GVGnxJ87V1yUIIRs4ZFAmh2xlIHn1pug;"; # 使用此cookie 搜索的时候谷歌用ajax加载结果(无刷新页面) 谷歌在搜索结果打开的时候不会弹出新窗口
# 关键字替换
subs_filter_types text/css text/xml text/javascript; # 过滤类型
subs_filter ssl.gstatic.com sqzr.cc; # google会加载ssl.gstatic.com的几个资源和文件,都是在gb目录下,下面反代这个地址
subs_filter www.google.com sqzr.cc;
# end 关键字替换
}

# 反代ssl.gstatic.com
location /gb {
# 随便写了下,自己没使用自己的服务器来反代
proxy_pass http://ssl.gstatic.com/gb/;
proxy_set_header Accept-Encoding "";
}
}

server {
listen 80;
server_name sqzr.cc;
rewrite ^(.*) https://google.sqzr.cc$1 permanent; # 强制使用https
}

使用七牛云代替gstatic

能不反代的地址尽量不要反代,比如一些常年不变的图片,可以直接就缓存到服务器上。
ssl.gstatic.com域上的几个资源就这样,可以用七牛云提供的镜像功能来缓存到七牛云上。

设置镜像站点
设置镜像站点

默认七牛给的域名不支持https,绑定一个他们分配的:
绑定支持https的域名
绑定支持https的域名

修改nginx中的关键词替换:
1
subs_filter ssl.gstatic.com dn-xxx.qbox.me;

访问一次,就自动缓存到七牛云的服务器上了:

缓存结果
缓存结果

一些细节问题

  1. 在网上看到很多人说无法成功的替换ssl.gstatic.com这个域名,之前我也遇到过,折腾了一天才发现proxy_pass http://173.194.38.69 某些地址可以修改成功,有些不可以(不知道原因,希望懂的能指导指导)
  2. google.com下的/textinputassistant/tia.png无法替换,也和上个问题一样,有些ip可以有些不行

没解决的问题

这样反代下来还是有几个问题没解决,如果使用第一个cookie反代google(用新页面打开搜索结果),搜索不了几次就会出现:
google反代提示
使用无刷新搜索的那个cookie就不会出来(因为整体页面没刷新,没加载,如果在里面切换到图片搜索再切换回来,一样会出现)
希望各位大神能指导指导

参考资料