使用nginx搭建Google反向代理并替换响应内容




最近由于天气原因,Google在国内的访问受到了严重的干扰。我们可以在国外服务器上配置Google的反向代理来实现。

配置Google反向代理.

nginx是一个强大的反向代理服务器。要实现反向代理功能只需要修改nginx的配置文件就可以了。

这是我的配置文件(没有使用SSL,懒得折腾了)

server {
listen 80;
server_name 【你的域名】;

location / {
proxy_redirect http://www.google.com/ /;
proxy_cookie_domain google.com 【你的域名】;
proxy_pass http://173.194.127.48;
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 【你的域名】;
sub_filter_once off;
}
}

测试并重载nginx配置,试试输入你的域名,应该已经可以正常显示Google的首页了。

替换响应内容.

你已经成功反向代理了Google,这时你可以向网页里添加一些奇怪的东西,或者统计代码,甚至广告。

nginx自带了sub_filter功能,但是这个语句在整个配置文件中只能使用一次。所以我们需要使用ngx_http_substitutions_filter_module这个第三方模块。

如果你的nginx是从软件仓库安装的,只需要执行(debian/ubuntu)

sudo apt-get install nginx-full

如果你的nginx是编译安装的,请参考这篇文章

比如说我们想要实现这样的效果:

图像 200

我们只需要在上面的配置文件中加这样一句:

subs_filter </form> '<br><center>蛤蛤蛤蛤蛤蛤蛤</center></form>';

意思是将

</form>

替换为:

<br><center>这是一个蛤蛤蛤蛤蛤蛤蛤</center></form>

也就是说将

<br><center>这是一个蛤蛤蛤蛤蛤蛤蛤</center>

加在</form>标签之前。

统计,广告代码也同理,只需要找到需要加入代码的位置,替换即可。


9 responses to “使用nginx搭建Google反向代理并替换响应内容”

  1. Google Chrome 63.0.3239.108 Google Chrome 63.0.3239.108 GNU/Linux x64 GNU/Linux x64

    楼主哇,替换好像不怎么管用了呢, 我的配置:

                   subs_filter_types text/css text/xml text/javascript;
                    subs_filter www.google.com domain.com;
                    subs_filter script 'ASD';
                    sub_filter_once off;
    

    用 Chrome Ctrl+U 看着 script 这个字符串并没有按照预期被替换为ASD

    有时间了看一下可以吗?先行谢过

    • Google Chrome 65.0.3298.3 Google Chrome 65.0.3298.3 Mac OS X  10.13.2 Mac OS X 10.13.2

      有几种可能性
      1. subs_filter_types里没有加上text/html
      2. 可能服务器开启了gzip,而subs_filter不能处理经过压缩的内容

      另外 sub_filter和 subs_filter是两个模块,所以最后一句once off应该是没有任何作用的。

Leave a Reply

Your email address will not be published.