前面说到使用 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.com gstatic.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 反向代理目前无法搜索的缺陷。

 

via.https://ichon.me/post/1027.html