【杂谈】如何优雅地搭建AO3的反代

发布于 / 信息应用 / 21 条评论

距离上一次水文章已经过去半个多月了,在家不能返回学校也确实不知道该写点什么。

起因是我在4.1的时候为朋友搭建了一个AO3的反向代理站点,最近根据统计数据来看访问量异常上升,最近都出现被官方暂时ban掉的现象了。既然如此,这次就简单谈一谈该如何去合理地配置AO3这个网站的反代。


就现在来说,用这个反代的人远超出了我的朋友范围,如果是从反代站点来的朋友可以放心,个人这个破反代站不会搜集任何访问者的信息;同时基于版权相关信息考虑,站点已经屏蔽了来自大陆以外的访问和搜索引擎的抓取。

希望大家能看到这篇的目的就是有一点我最担心的,反向代理的反代服务器IP固定,大量访问源站我不排除后面被官方视为攻击而被屏蔽的可能,如果你有能力,请参考下方配置文件搭建反向代理。

关于账号的登陆,如果你信得过的话可以随意,但是可能会造成异地登陆和跳IP的问题,官方对此的处理不在个人可控范围内。如果有其他的问题,欢迎在本文下方留言,我会尽力解答。题外话,这个破站不会接受任何捐助,服务器的费用我自己付就够了,当然肯定也不保证会一直运行下去(尽力为止)

站点地址:点击前往


更新日志

#7.3 Update

不出所料日PV超过10万后域名被污染了,这也是在警示我不要再搞了,有缘再会。

#6.25 Update

修改后端策略,Retry Later错误应该不会出现了。

#6.18 Update

由于近期访问量上升,为了提升访问体验和反代的效率,本次较大变动将进行前后端分离并引入主动负载均衡。现在是使用的高质量的前端和很垃圾的后端配合,四层检验失败会自动关闭宕机的后端,这样后端成本压缩算是到了极致了。前端使用的是微软的Azure(流量大太贵了,还是嫖Oracle吧),国内访问的速度应该在各类反代中是比较靠前的。

#5.5 Update

添加了几台闲置的机器,现在一共是6个VPS通过DNS进行的负载均衡。


一、何为反代

简而言之就是一个中转,不过不需要你主动去做一些动作去走这个代理,所以它的“反向”也就是这个意思,代理不是镜像,只是一个中转;其他关于反向代理究竟是什么请通过 《百度百科:反向代理》去了解。

后文对于反向代理的搭建都是通过NGINX完成的,如果你正在使用NGINX的话下面的操作你应该不会太陌生,不过如果你没有使用过那还是建议找一些网站圈子的朋友帮你配置一个,毕竟在这之外还需要一些其他的操作。


二、准备工作

既然是代理,那么就需要一台既能够访问AO3、又能够连接境内的服务器。AO3的服务器在美国东海岸的弗吉尼亚州,个人觉得AO3的源服务器网络质量并不是很好,作为中转看你是选择一个到访问者比较快的还是到源站比较快的服务器都可以,我选择的是弗吉尼亚的AWS。

再就是一个域名,不建议用免费的,在name.com注册一个6数字的.xyz只要0.99美金吧;再不济,国内阿里腾讯这样大把的注册商,就是国内要实名比较麻烦。


三、配置反代

关于配置反代,我已经默认了你配置好了vhost,ssl看自己意愿,非必须。我们需要的是反代archiveofourown.orgmedia.archiveofourown.org两个地址。作为演示我假设我的域名是example.com,那么我用来反代的两个域名就是ao3.example.commoedia.ao3.example.com

以下是第一个域名的反代,其中example.com请自己替换成你自己的,如果代码框未加载完全请刷新本页面。

另一个media的域名就没什么重要的了,如果你不配置也没什么,不影响网页的展现


四、屏蔽设置

因为我使用的是CloudFlare的CDN,通过Partner比较简单地接入,DNS做了分线路的解析,如果有需要的话其实可以通过DNS分线路进行负载均衡。

页面规则的配置如图,忽略字符串缓存静态文件即可。

另外就是防火墙规则,第一条是我自己的测试IP,第二条是屏蔽已知的Bot,第三条屏蔽所有境外访问,第四条如果IP非127.0.0.1则进行验证码检验(也就是全体检验,为了防刷)。注意规则的优先级是从上到下的,如果匹配了在前面的规则则后面的不会生效。

DNS这边分线路解析,自选IP之类的就不说了,我以前写过这方面的文,有需要自己翻一翻之前的吧。


五、统计代码

如果你想给你的反代加一个网站统计,也不是不可以。绝大多数的面板程序在自动生成nginx的配置文件的时候都会将.well-known单独配置一个location,因为这个目录是签发SSL证书目录校验用的,没有也没关系,自己新建个这个文件夹。

然后把你的统计代码<script>标签中间的内容复制下来,保存到这个目录下的tj.js(你想改成其他名字的.js也行),然后反代的sub_fiilter那一坨加一条


六、负载均衡

之前一直使用的是基于DNS的分线路负载均衡,由于DNS缓存的原因这个并不太均衡……再就是访问速度的问题,线路太差的廉价VPS也不敢去用,不然打都打不开算什么了……

这一次更换成了Haproxy的主动负载均衡,后端用了闲置的几台机器和几个NAT做测试,其他的细节有时间再详细写。对Haproxy也是刚刚接触,负载均衡就写的4层的,再高阶的后面再做研究。


AO3源服务器目前为止没有做任何的防反代措施,也没有限制网页的修改,不过不清楚以后会怎么样,做了反代就不要干那种在网页上插广告的恶心行为了吧。

官方服务器的防CC阈值应该是每分钟请求数不超过30次,所以个人不建议大规模公开下,好了,想说的就这些了( ̄▽ ̄)”


*原创文章,转载请注明出处

转载原创文章请注明,转载自: Luminous' Home » 【杂谈】如何优雅地搭建AO3的反代
  1. 串门,感谢大佬教程【土下座】我也要优雅一波【雾】

    1. @千玖夜 不敢不敢XD,搞反代还把一个域名被污染掉了
  2. 大佬好厉害,给大佬打尻

    1. @CZM 不,我菜,给大哥打Call
  3. 代码块不加载似乎是一个问题 == 清除缓存强制刷新以后就好了,不知道是什么原因

    1. @惶心 是的,Crayon插件的资源没通过ajax引入,刷新页面就可以了……
  4. 不太清楚ao3的网站需不需要登录…… 搞过反代理pixiv站,结果卡在登陆上了,给我整懵逼了

    1. @洛伊真天 Pixiv有很多子域名都要配置反代,比较麻烦
      1. @Luminous 有个挺神奇的问题。。。。反代pixiv的话。。。页面规则能不能弄个缓存+忽略字符串来保证互动+节省流量
        1. @LYM 当然可以,都是图片,就是反代i.pximg.net这几个地址要加上proxy_set_header Referer 'https://www.pixiv.net/'来解决防盗链问题吧。
          1. @Luminous 我自己搭了一个。。。准备套cf了emmm 当然。。。。不敢直接放出来。。。 cf页面缓存规则真的不太会设置。。。全缓存又不能保证数据更新和互动,。。不缓存又有点耗资源emmm
            1. @LYM domain.com/*.jpg对特定类型的文件是这样的格式,*为通配符,不加后缀就是对目录生效,有重复的话靠上的规则优先级更高。
              1. @Luminous 这个倒是知道,。。但是优化网站方面。。。咱就是菜emmmmmm脑壳痛。。。
                1. @LYM CF主要还是前端到访问者这一段慢,回源和缓存上下功夫的提升不是特别大,尽量把源站放在北美就可以了,这样回源不会太绕(~﹃~)~zZ
                  1. @Luminous 康康?qwq https://loli.by/
                    1. @LYM 还可以的,还可以尝试自己选一选合适的CF IP(。ò ∀ ó。)。忽略字符串一般适用,不过有些目录自己看配置Cache Everything也可以的。
                    2. @Luminous 我直接把uoload目录给缓存了。。原本想缓存全部的,,,但是缓存全部后选择忽略字符串好像不会缓存图片之类的、、、、导致更慢了emmmm
                    3. @Luminous 自选ip因为电信+校园网。。本机完全看不出有何不同。。。。完全放弃。。
                    4. @LYM 电信可选择的比较少,v4的CERNET有一小段能够从香港澳电出去,速度还可的
              2. @Luminous 忽略字符串后感觉大部分都不缓存了。。。。。
    2. @洛伊真天 是的谷歌验证阻止了登入,可以本地带cookies或者服务器直接代理cookies,不过后者任何人访问都会直接登入这个账号emmm