点击上方蓝字,创软助你涨姿势 维基百科,相信大家既陌生又熟悉的,但是,由于某些不可描述的原因,目前中文维基百科被关键字屏蔽和DNS污染无法正常访问。但是!!!创软一直有对外开放一个维基百科的镜像,通过这个镜像,你同样可以访问到相同的中文维基百科的内容,去了解,认识这个世界。 接下来。。。小编我冒着生命危险把制作解析偷偷告诉你们~接下来 就是见证奇迹的时刻~ 准备 首先,你需要先准备: 1、在香港/台湾或国外的VPS; 2、VPS上安装Linux系统; 3、系统内安装Nginx; 4、Nginx带有ngx_http_substitutions_filter_module插件; 原理 镜像实际上是对维基百科的反向代理,通过VPS作为代理,代替用户到真实的维基百科服务器拉取资源然后返回。 (听不懂?没关系 来个简单粗暴的) 对于所有反向代理网站的制作,我们必须解决几个问题: 1、反向代理域名; 2、替换的网页内容; 对于中文维基百科,我们需要反向代理(下面简称反代)三个域名: 1、zh.wikipedia.org (主域名) 2、zh.m.wikipedia.org (手机域名) 3、upload.wikimedia.org (图片资源域名) 而替换内容主要是为了将原页面的链接替换为我们服务器的域名,这样才能实现无缝访问。 域名反代 首先,我们来试一下基本的反代:
在Nginx的配置档里加入上面的配置,把domain.com更换为你自己的服务器域名。然后重启Nginx服务。就完成最基本的维基百科反代了。 proxy_pass是Nginx服务器ngx_http_proxy_module模块的参数,表示设置一个被代理的服务器协议与地址。在这里我们要反代的是https协议的中文维基百科主域名zh.wikipedia.org 访问w.domain.com,就会看到维基百科的中文首页。但是,图片全部都是无法显示的。 资源反代 那么,接下来我们就再加入维基百科图片资源域名的反代。
记得每次修改配置后,都要重启Nginx服务。 这时我们随意选择页面上一张图片,右键复制图片地址,比如: 将https改为http,将upload.wikimedia.org改为up.w.domain.com,然后打开: 就会发现,图片可以显示了。 地址替换 但是这样还是不够的,我们还需要将网页上所有图片地址和链接的域名更换为我们的域名。这就需要使用到Nginx 的ngx_http_substitutions_filter_module模块,这个模块默认安装是没有的,需要自行编译安装进去。方法请自行Google。(ge.sxisa.org) 若你已经安装,就把配置修改如下:
这里新增了两个参数: 1、subs_filter_types:设置需要参与替换的文件mimeType。 2、subs_filter:设置替换文本的规则。这里只是单纯的文本替换,末尾加上r参数,还可以支援正则表达式替换。 然而,你打开页面就会发现,图片的地址根本没有被换掉,是什么配置写错了吗? 替换的代码没有任何问题,问题出在zh.wikipedia.org本身。 打开Chrome开发者工具,选择Network。重新刷新页面,就可以看到页面加载过程的所有请求。选择第一个请求,在Response Headers里可以看到网页的Content-Encoding是gzip。也就是服务器请求到的内容是压缩的,所以自然无法直接做文本替换了。 那么我们可以在proxy_pass后加上一句:
设置请求头,加上Accept-Encoding '',这样维基百科的服务器就会返回文本的内容而不是gzip的了。访问一下,果然所有的图片都可以访问了~ 等等,好像还缺点什么,用手机访问试试? 咦!为什么不行?!仔细看看,域名又跳回去到维基百科原域名了。原来,维基百科还有手机专用的域名:zh.m.wikipedia.org。 用同样的方式,加上手机域名的反代:
然后,主域名的反代也要修改一下:
重启服务后,再访问就可以了: 至此,中文维基百科的反代就完成了。以后就可以畅通无阻地访(kai)问(che)人类目前最大知识宝库了。 预告 但是,这样的车还是没有安全带的。为了安全,我们还要给网站上https。怎么让镜像支援https呢?且听下回分解。镜像地址:wi.sxisa.org 创软俱乐部 微信:sziitISA 一个让你涨姿势的社团 长按二维码关注 本文转载于微信公众号: 创软俱乐部ISA(sziitISA),更多微信文章请扫描关注公众号: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|