南琴浪博客

Nginx 反代 Google(基本篇)

11/20/2017

对于谷歌依存症的我们,爱国上网必不可少。而要是哪天爬不出去了,直接访问镜像站也是一个备用选择。本文介绍如何用 Nginx 建立一个 Google 的反向代理。

既然有基本篇,当然就还有下文的其它篇章了。我之后会写一个附带更多特性的进阶篇并附上我自用的配置。此外,Nginx 反代 Google 有一个很方便的插件 ngx_http_google_filter_module,我会再开一个插件篇来介绍这个插件。

所需准备

  1. 一台国外主机( 例如 VPS )
  2. 一个域名(可选,直接用 IP 访问也可,但不安全)
  3. 一个 SSL 证书(可选,用于 HTTPS ,为安全考虑强烈建议启用 HTTPS )
  4. 含有所需拓展的 Nginx

其中,所需拓展为 http_sub_module,要启用这个拓展,只需要在编译 Nginx 时加入:

./configure  ...  --with-http_sub_module

当以上准备均已 OK 后,开始吧!

Nginx 的配置文件

编辑你的站点配置文件 你的站点配置.conf

以下配置,只需将其中的中文关键词替换为你自己的之后,就可以直接使用了。

### server 段 ###
server {
        listen 监听端口;

        server_name 你的域名;

        # 为了安全考虑(例如 IP 被墙),强烈建议使用 HTTPS
        ssl on;
        ssl_protocols TLSv1.2;
        ssl_certificate ~/站点证书
        ssl_certificate_key ~/站点证书密钥

        location / {
            proxy_pass                          https://www.google.com;

            # 替换指定字符串
            sub_filter                          www.google.com 你的域名;
            # 字符串只进行一次替换,即只替换第一个被匹配的字符串。这里关闭。
            sub_filter_once                     off;

            # 指定头部:
            proxy_set_header  Host              "www.google.com";
            proxy_set_header  Referer           $http_referer;
            proxy_set_header  X-Real-IP         $remote_addr;
            proxy_set_header  User-Agent        $http_user_agent;
            # 防止谷歌返回压缩的内容,因为压缩的内容无法替换字符串
            proxy_set_header  Accept-Encoding   "";

            #把 cookie 的作用域替换成你的域名
            proxy_cookie_domain                 www.google.com 你的域名;
            #传固定的 cookie 给谷歌,是为了禁止即时搜索,因为开启即时搜索无法替换内容
            proxy_set_header  Cookie            "PREF=ID=047808f19f6de346:U=0f62f33dd8549d11:FF=2:LD=en-US:NW=1:TM=1325338577:LM=1332142444:GM=1:SG=2:S=rE0SyJh2W1IQ-Maw";
        }
}

然后重新加载你的 Nginx,就可以访问你的域名看看效果了。