距离上一次水文章已经过去半个多月了,在家不能返回学校也确实不知道该写点什么。
起因是我在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.org
和media.archiveofourown.org
两个地址。作为演示我假设我的域名是example.com
,那么我用来反代的两个域名就是ao3.example.com
和moedia.ao3.example.com
。
以下是第一个域名的反代,其中example.com
请自己替换成你自己的,如果代码框未加载完全请刷新本页面。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#proxy.conf location / { proxy_pass https://archiveofourown.org; proxy_set_header Host archiveofourown.org; proxy_set_header X–Real–IP $remote_addr; proxy_set_header X–Forwarded–For $proxy_add_x_forwarded_for; proxy_set_header REMOTE–HOST $remote_addr;
#避免GZIP影响文字替换 gzip off; proxy_set_header Accept–Encoding “”; #无用资源替换为空值 sub_filter “twitter.com” ” “; sub_filter “newrelic.com” ” “; #将网页原域名替换为反代域名 sub_filter “archiveofourown.org” “ao3.example.com”; #将Jquery等引用的静态资源替换到国内CDN sub_filter “ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js” “lib.baomitu.com/jquery/1.9.0/jquery.min.js”; sub_filter “ajax.googleapis.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js” “lib.baomitu.com/jqueryui/1.10.0/jquery-ui.min.js”; #允许多文本替换 sub_filter_once off; } |
另一个media的域名就没什么重要的了,如果你不配置也没什么,不影响网页的展现
1 2 3 4 5 6 7 8 9 |
#proxy.conf location / { proxy_pass https://media.archiveofourown.org; proxy_set_header Host media.archiveofourown.org; proxy_set_header X–Real–IP $remote_addr; proxy_set_header X–Forwarded–For $proxy_add_x_forwarded_for; proxy_set_header REMOTE–HOST $remote_addr; } |
四、屏蔽设置
因为我使用的是CloudFlare的CDN,通过Partner比较简单地接入,DNS做了分线路的解析,如果有需要的话其实可以通过DNS分线路进行负载均衡。
页面规则的配置如图,忽略字符串缓存静态文件即可。
另外就是防火墙规则,第一条是我自己的测试IP,第二条是屏蔽已知的Bot,第三条屏蔽所有境外访问,第四条如果IP非127.0.0.1则进行验证码检验(也就是全体检验,为了防刷)。注意规则的优先级是从上到下的,如果匹配了在前面的规则则后面的不会生效。
DNS这边分线路解析,自选IP之类的就不说了,我以前写过这方面的文,有需要自己翻一翻之前的吧。
五、统计代码
如果你想给你的反代加一个网站统计,也不是不可以。绝大多数的面板程序在自动生成nginx的配置文件的时候都会将.well-known
单独配置一个location,因为这个目录是签发SSL证书目录校验用的,没有也没关系,自己新建个这个文件夹。
1 2 3 4 |
#插入NGINX配置文件证书配置后 location ~ \.well–known{ allow all; } |
然后把你的统计代码<script>
标签中间的内容复制下来,保存到这个目录下的tj.js
(你想改成其他名字的.js也行),然后反代的sub_fiilter那一坨加一条
1 2 |
#将统计代码插入<head> sub_filter ‘</head>’ ‘<script src=“/.well-known/tj.js”></script></head>’; |
六、负载均衡
之前一直使用的是基于DNS的分线路负载均衡,由于DNS缓存的原因这个并不太均衡……再就是访问速度的问题,线路太差的廉价VPS也不敢去用,不然打都打不开算什么了……
这一次更换成了Haproxy的主动负载均衡,后端用了闲置的几台机器和几个NAT做测试,其他的细节有时间再详细写。对Haproxy也是刚刚接触,负载均衡就写的4层的,再高阶的后面再做研究。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
global
defaults log global mode tcp option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000
frontend ao3–in bind *:20000 maxconn 20000 default_backend ao3–out
backend ao3–out server node1 x.x.x.x:443 maxconn 20480 weight 60 check inter 500 rise 1 fall 2 server node2 x.x.x.x:443 maxconn 20480 weight 10 check inter 500 rise 1 fall 2 server node3 x.x.x.x:443 maxconn 20480 weight 30 check inter 500 rise 1 fall 2 |
AO3源服务器目前为止没有做任何的防反代措施,也没有限制网页的修改,不过不清楚以后会怎么样,做了反代就不要干那种在网页上插广告的恶心行为了吧。
官方服务器的防CC阈值应该是每分钟请求数不超过30次,所以个人不建议大规模公开下,好了,想说的就这些了( ̄▽ ̄)”
*原创文章,转载请注明出处
原文链接:https://luotianyi.vc/3792.html