计算机 A 配置 frpc
服务器 B 配置 frps
测试一 : 服务器B ip+端口访问, 计算机 A 上传文件
可以看到这里上下行是同时进行的。进度条走到 100% 后,隔两三秒就上传成功。不管文件多大。
测试二: 配置域名反代服务器B的暴露端口+SSL , 计算机 A 上传文件
它在上传和下载变成串行,不再流式从 frps 接收文件
上传
卡100%时在下载
这样会导致用户看到进度条达到100后卡住很久,和文件大小线性相关,卡住(文件大小/下载速度)s.大文件体验相当差。(500MB 卡一分钟)
测试三: 更换计算机 C 重复上述上传。 一样的结果, ip 不卡 100%,域名卡 100%
3 Likes
问题似乎来到了 SSL 这边
我把 frp 直接的暴露端口开到了 80
然后通过自定义域名访问,它依然是并行的。
但是我直接用 frp 配置 https ,并且暴露443, 会长时间加载但是无法解析到源站。我直接ping https://test.xnnehang.top 会 ping 到我的计算机 A 的局域网。
我怀疑是 http 和 https 之间不能直接建立传输
我后面用 cdn 代了一下我的 http://test.xnnehang.top 到 https://xlab.xnnehang.top,并且配置了 SSL 证书,那个并行变串行的方式又出现了。
PS: 用 1panel 进行反代,即使 http 访问也会变串行
所以,从域名到SSL都需要通过frp完成。
看了佬友的描述感觉绕晕了,太复杂了,感觉疑问反而更多了,首这个服务是可以双工进行的可以同时处理内容。并且这个frp服务器的网络质量如何,是否是境外服务器还是您在内网搭建的测试环境?并且您开启了代理工具,却对域名进行了ping,可能是fake-ip功能干扰了dns解析,将域名劫持为了内网ip?
我猜想也许是各种http反代工具的client_max_body_size策略不同,也许是反代工具缓存了请求,在等待完成全部上传后再在服务器再慢慢分片发送回nginx,程序一直等待文件块,所以无法进行双工传输?排除这个问题,建议先frp直接进行tcp代理试试。
但是如果不使用frp的http代理而使用tcp代理,nginx将无法获得客户端的ip,请求来源将始终为127.0.0.1,不建议生产环境使用。
1 Like
我最后放弃了反代
直接用 frps 占用了 80 和 443 端口
然后用 frpc 配置证书
frpc.toml
serverAddr = "5.xx.70.xx"
# serverAddr = "5.xx.70.xx"
serverPort = 7000
auth.token = ""
[[proxies]]
name = "XnneHangLab"
type = "https"
customDomains = ["lab.xnnehang.top"]
[proxies.plugin]
type = "https2http"
localAddr = "127.0.0.1:8051"
crtPath = "./ssl/lab_cert.pem"
keyPath = "./ssl/lab_key.pem" #
hostHeaderRewrite = "127.0.0.1"
requestHeaders.set.x-from-where = "frp"
frps.toml
auth.token = ""
# http协议监听端口
vhostHTTPPort = 80
vhostHTTPSPort = 443
bindPort = 7000
# web界面配置
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = ""
webServer.password = ""
不直接占用端口也行,网址后面指定端口访问就可以。
我试验了半天,发现反代会变串行,cdn会变串行。只有直接通过frp配置的自定义域名不会串行。
目前我困扰的点来到了,我直接用 ip和 自定义域名上下行差不多10MB/s
而加了SSL却只有不到2MB/s
system
(system)
Closed
10
此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。