使用 Caddy 配置 Google 反向代理

 Jan. 2, 2018, 4:12 p.m.   0 comments    Caddy Google 反向代理

前面说到使用 Caddy 配置 Wikipedia 反向代理,其实平常用到更多的还是 Google,因此这里再来研究一下如何在 Caddy 上配置 Google 反向代理。

其实在用 Caddy server 之前我是一直使用 Nginx 的,作为一个 Nginx 用户,我更推荐使用 Nginx Module for Google ,这个插件,虽然安装起来有点麻烦,但是配置极其简单,效果拔群。

而对于 Caddy ,目前还没有太多现成的资料可以使用,好在配置起来并不是很复杂,配置文件如下:

google.example.com {
    gzip
    proxy / https://www.google.com {
        header_upstream X-Real-IP {remote}
        header_upstream User-Agent {>User-Agent}
        header_upstream Accept-Language zh-CN
        header_upstream Accept-Encoding identity
    }
    filter rule {
        content_type text/.*
        search_pattern www.google.com
        replacement google.example.com
    }
    filter rule {
        content_type text/.*
        search_pattern (www|ssl).gstatic.com
        replacement gstatic.example.com
    }
    filter rule {
        content_type text/.*
        search_pattern zh.wikipedia.org
        replacement wiki.example.com
    }
    filter rule {
        content_type text/.*
        search_pattern zh.m.wikipedia.org
        replacement m.wiki.example.com
    }
}
gstatic.example.com {
    gzip
    proxy / https://www.gstatic.com {
        header_upstream X-Real-IP {remote}
        header_upstream User-Agent {>User-Agent}
    }
}

DNS配置:将域名google.example.comgstatic.example.com的A记录指向 Caddy server 所在的服务器 IP 地址即可,Caddy 会自动申请并配置 TLS 证书,非常简单。

www.gstatic.com 也需要反向代理原因是 Google 引用了来自 www.gstatic.com 的静态资源。

Accept-Language设置为zh-CN是因为我希望用 Google 来搜索中文内容(哪怕是搜索中文内容 Google 也比百度强多了)。

Accept-Encoding设置为identity是为了禁用 upstream 的 gzip,否则由于 gzip 的存在会导致http.filter插件对内容的查找和替换失败。

顺便将前面配置的 Wikipedia 反向代理地址也加入了进来,这样的话在 Google 中搜索到的 Wikipedia (中文)词条就会自动转换成反向代理地址,查看 Wikipedia 词条更简单,也弥补了 Wikipedia 反向代理目前无法搜索的缺陷。