frp 直接 ip 访问在配置域名+SSL 后的传输由并行变串行?

计算机 A 配置 frpc
服务器 B 配置 frps

测试一 : 服务器B ip+端口访问, 计算机 A 上传文件

可以看到这里上下行是同时进行的。进度条走到 100% 后,隔两三秒就上传成功。不管文件多大。

测试二: 配置域名反代服务器B的暴露端口+SSL , 计算机 A 上传文件

它在上传和下载变成串行,不再流式从 frps 接收文件

上传

卡100%时在下载

这样会导致用户看到进度条达到100后卡住很久,和文件大小线性相关,卡住(文件大小/下载速度)s.大文件体验相当差。(500MB 卡一分钟)

测试三: 更换计算机 C 重复上述上传。 一样的结果, ip 不卡 100%,域名卡 100%

3 Likes

这个咋整呀 :rofl:

我已经尽力提高我家的下行带宽了,但是它吃不满。

我是希望 frp 能够保持上下行同时进行的。

似乎和 nginx 有关,以及 SSL的配置。

2 Likes

问题似乎来到了 SSL 这边

我把 frp 直接的暴露端口开到了 80

然后通过自定义域名访问,它依然是并行的。

但是我直接用 frp 配置 https ,并且暴露443, 会长时间加载但是无法解析到源站。我直接ping https://test.xnnehang.top 会 ping 到我的计算机 A 的局域网。

我怀疑是 http 和 https 之间不能直接建立传输

我后面用 cdn 代了一下我的 http://test.xnnehang.tophttps://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

此话题已在最后回复的 30 天后被自动关闭。不再允许新回复。