容器时代:使用 Docker 在VPS 上反向代理 Google(附演示站点)

远古时代

现在的 Google 镜像方案大多使用的是 https://github.com/cuber/ngx_http_google_filter_module 方案,其README 中使用的Nginx版本为nginx-1.7.8,此版本甚至不支持 HTTP2,低版本的Nginx 也会存在一些安全问题,这个方案不推荐使用。
老版本的安装办法(见下图):下载Nginx->下载插件->编译安装->配置相关代理

每有一台需要搭建 Google代理的机器我们都需要这样编译安装一遍,实在是费心费力。那么有没有简单一点的方法呢?

容器时代(以 Docker 为例)

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 -百度百科

大家可以把容器理解成一种轻量级的虚拟机。我们将所有的环境打包在一个虚拟机中,然后备份这个虚拟机,然后能够在其他的机器上将这个虚拟机恢复,延续了虚拟机环境。为什么叫轻量级呢,因为传统化的虚拟机模拟了一层硬件层,而 Docker与主机共享一个内核,少了一层硬件模拟层,效率大大提升。使用 Docker 管理工作,能够不污染系统环境,不破坏系统现有依赖,当机器变更时能迅速迁移,实为居家旅行必备产品。

现有的轮子

想做的事情,一般都有人做过了并且会在互联网上留下痕迹 -鲁迅

这里我推荐的是https://hub.docker.com/r/suconghou/nginx-google/,该镜像使用alpine作为底层机器,镜像大小仅为11M。
安装步骤很简单不在此赘述

添加证书

添加证书当时我使用的是let’s encrypt 提供的解决方案,let’s encrypt能够提供三个月的免费证书(到期之后可以续签),现在使用的解决方案是使用 CloudFlare提供的带加密的 CDN 功能。(使用此功能需将域名的 DNS 解析服务商 设置为CloudFlare )
在 DNS 中设置Status 为 DNS+Proxy

在Cypto 中设置加密类型为 Flexible

即CDN 回源时使用 HTTP 访问,然后用户->CDN,CDN->用户的流量使用 HTTPS进行加密。

最后

扬帆,起航 飞奔吧少年

参考资料

点赞
  1. admin说道:

    域名被 DNS 污染了。gg

  2. fht's lover说道:

    好喜欢admin!!各位姐妹都不要和我抢他嘻嘻

  3. k核桃说道:

    帅核桃,我想学python,写一点爬虫,难道要从python基础教程学起吗,那真的非常枯燥,第二章来个什么列表、元组。啊,我该怎么学?

    1. admin说道:

      跟你分享一下我当时学 Python 的经历吧 hh。
      第一次接触 Python 是发现了学校的一个网站有漏洞,可以获得学生的一些敏感信息。因为学生的数量很多,我需要自动的发送 HTTP 请求,然后把 Response 存下来。然后我就去Google 了一下,Python 如何发送 HTTP 请求。Python 如何使用正则表达式。于是一番鼓捣之后代码就跑起来了。在把这个代码鼓捣起之后其实我还是不知道 Python 里面的很多概念,例如如何打开一个文件,什么是list 什么是 tuple,但是这丝毫不影响我的爬虫代码,之后 Python 的使用场景多了,自然就会用到 Python 的一些其他特性,需要用到他的特性的时候直接查阅资料就可以了。所以我的建议是:不必要从 Python 基础教程开始学习
      至于爬虫,不必把爬虫看得看神奇了,爬虫就是一个发送 HTTP 请求,然后获取服务器端 Response 的过程,简单的爬虫用 bash 下的 curl 和 grep 就可以获得,curl 用来发送 HTTP 请求并获取服务器返回的数据,使用 grep 来从HTML 数据中提取出我们所需要的数据出来。那么放到 Python 中,这个就是 requests 和 re 模块。requests 能够很方便地发送一个 http 请求,然后获得服务器端返回的 HTML,用 re(也就是正则表达式模块)就可以从HTML 中获取我们想要的内容。所有的爬虫都是围绕request和 Response 来做文章的,多写一点爬虫之后你会发现诸如单线程不够用、多线程开销过大、Python GIL 锁很蛋疼、单机瓶颈、需要绕网站反爬等问题,这些都有比较成熟的解决方案,所以我的建议是直接写爬虫开始去糗事百科/草榴社区 抓点东西下来写出第一个爬虫
      另:欢迎造访我的博客

      1. k核桃说道:

        帅核桃回答得非常细心,也希望有更多的网友能看到,我先领会下帅核桃说的方法。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.