背景:目前很多服务针对单IP在单个时间段内的访问做了限制,但RSS服务需要定时访问这些服务,为了突破限制,需要将这些请求从多个IP进行分流。目前我使用的RSS转换服务为RSSHUB(地址:https://docs.rsshub.app/) ,RSS服务为自建Tiny Tiny RSS。

使用frp进行IP分流,需要在目标服务器上创建frps,为不泄露相关信息,本文中,云主机公网IP设定为11.11.11.11,token、端口和dashboard相关信息都是随机填写,请按照自己的需求进行更改;如果是搭建在阿里云、腾讯云、aws、azure等云大厂的云服务器上,请注意安全组放开相关端口。需要注意的是,服务器的80和443必须提供给frps,不然会导致搭建失败。frps.ini配置如下:

//frps.ini
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
token = 123456

承载frpc的设备根据负载来,如果仅仅是单纯提IP分流的frpc使用,可以使用以前矿灾淘汰的的硬路由或可以刷Linux的机顶盒、开发板,如斐讯N1、小娱、树莓派等,提供相关服务的同时,最大程度降低电费消耗(一个月几块钱的电费,哈哈哈哈哈)。

完成后续操作后,请在RSS相关服务器上填入hosts或者docker上添加Host字段来达到分流的目的。

一、HTTP链接

针对源站为HTTP链接的,可以使用frp提供的HTTP负载均衡方案即可。为减少对frps所在云服务器的资源消耗,本文不开启健康检查,如果frps所在的云服务器性能较为强劲的,可以考虑开启健康检查,具体操作详见frp的相关章节:负载均衡与健康检查 ,本文给给出实现功能的最简配置,以要访问http://www.aaa.com 为例:

//frpc.ini
[common]
server_addr = 11.11.11.11
server_port = 7000
token = 123456

[aaadl-1]
type = http
local_ip = www.aaa.com  //填入想要代理的域名
local_port = 80
custom_domains = www.aaa.com    //填入想要代理的域名
group = aaadl        //每个地址需要不一样
group_key = aaadl
use_encryption = true
use_compression = true

二、HTTPS链接

针对源站为HTTPS链接的,frp本身暂不支持负载均衡模式进行代理,但在目前的趋势下,HTTPS因为SSL证书加密的可靠性,使得越来越多的目标站点使用了HTTPS。针对这个情况,参照各类方案后,最后选择了TCP负载均衡+本地一次HTTPS代理的模式来达到相关目的。本次给出最简配置,以访问 http://www.bbb.com 为例:

在IP所在设备上的配置,将访问以TCP的:

//frpc.ini
[common]
server_addr = 11.11.11.11
server_port = 7000
token = 123456

[bbb-1]                          
type = tcp                            
local_ip = www.bbb.com                 
local_port = 443                      
remote_port = 2453                  
group = bbb             //每个地址需要不一样            
group_key = bbb                      
use_compression = true                
use_encryption = true 

在服务器上的配置将tcp端口转发到443的操作,完成相关操作:

//frpc.ini
[common]
server_addr = 127.0.0.1
server_port = 7000
token = 123456

[wwwbbbcomhttps]
type = https
local_ip = 127.0.0.1
local_port = 2443   //填入代理过来的端口
custom_domains = www.bbb.com    //填入想要代理的域名
use_encryption = true
use_encryption = true