先访问A.client.com,再去访问B.client.com,也会报错;
反过来再去访问https://B.client.com报错,估计:frps把ip指向了A.client.com的ip,这样浏览器便会报错;
为了验证此问题,我特意在主机 ip-192.168.0.20 用nginx反向代理做了两个站点,
一个域名是A.client.com,
一个B.client.com (这个站点的内容跟frpc客户端B- ip-192.168.0.30站点内容是不一样的)
frpc客户端A的配置只设置了一个https://A.client.com,
测试: (外网访问,访问的ip跟 frpc客户端A 和 frpc客户端B 都不在同一网段)
访问https://A.client.com, 再访问https://B.client.com,不会报错,
会访问到frpc客户端A ip-192.168.0.20 下定制B.client.com,而不是我们想要的 “ frpc客户端B ip-192.168.0.30的B.client.com”
这很明显访问B.client.com,ip指向了frpc客户端A的ip
这种https的ip错乱,让frpc配置的https主机被访问很慢;
我是把浏览器装在安卓盒子下,问题很容易显现,手机浏览器也是;
电脑上的浏览器缓存大,要多试几次才会出现;
不经过frps去访问网站都是正常的;
楼上说的http正常,我没有仔细测试过;http的站点不安全,我一般不用;
此问题未解决之前,通过frp部署https网站,,很麻烦; 如有使用者的网站是http/2, 其他人的httpss网站都受到影响;
猜测:http/2 多路复用底层采用"增加二进制分帧层"的方法,frps 在处理http/2 报文的时候有问题,
实际测试:处理http/1.1 的网站不存在此问题 ;
希望大神 @fatedier 能早日解决这个问题;
custom_domains = xxxx.xxxxxxxxxx.com
我的问题是 frpc 使用 https2http,在火狐浏览器上传文件时经常出现 400 bad request,在谷歌浏览器没有问题。apache日志是看不到任何访问日志的,搜到了几篇文章才知道是 https2http 的问题。
总之最佳的是 frps -> frpc(不处理https) -> apache(处理https)
我还遇到的一个问题是,一开始我用的是 nginx -> frps -> frpc -> apache,最好也不要在 frps 前加 nginx 什么的,经过 nginx 加解密之后传给 frps 跟 直接传给 frps 可能不一样,有时候可能会出现问题。
我参考的几个链接:
https://cloud.tencent.com/developer/article/1541075
https://my.oschina.net/timebear/blog/4547704
CSRF(Cross-site request forgery)是跨站请求伪造,也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
看看是不是你的项目启用了拦截验证,我的项目遇到了这个情况,我把请求错误的方法屏蔽CSRF验证,400错误就没了。
CSRF(Cross-site request forgery)是跨站请求伪造,也被称为One Click Attack或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。
看看是不是你的项目启用了拦截验证,我的项目遇到了这个情况,我把请求错误的方法屏蔽CSRF验证,400错误就没了。
可能像你说的那样,但是没时间折腾 CSRF验证 的问题,开启 CSRF验证 应该有它的道理;
我现在测试,两个网站就在同一个 froc 两个网站打开也有类似的问题,
[a.ax2009live.com.com]
type = https
local_ip = 172.18.0.199
local_port = 443
use_encryption = true
use_compression = true
custom_domains = a.ax2009live.com
tls_enable = true
proxy_protocol_version = v2
[b.ax2009live.com-443]
type = https
local_ip =172.18.0.200
local_port = 443
use_encryption = true
use_compression = true
custom_domains = b.ax2009live.com
proxy_protocol_version = v2
访问 https://b.ax2009live.com 再去访问 https://a.ax2009live.com 内容会串 , 其实是把 a.ax2009live.com 重定向 b.ax2009live.com ( 或反过来,以最新打开域名内容为优先 )
windows chrome 和 android chrome 都遇到同一的问题,一试一个准; 过几分钟恢复,
( https://a.ax2009live.com 和 https://b.ax2009live.com 可以直接访问, 问题已经解决,关闭开放 )
跟 chrome 内核一样的浏览器,测出有这个问题;
IE、firefox,safari 没有测出问题; (firefox 45 测出 断断续续 有问题)
不知道是 frp 有没有关系,还是跟 chrome 内核有没有关系?
https://a.ax2009live.com/hello-world 应该是如下这个样子
https://b.ax2009live.com/hello-world 应该是如下这个样子
内容复制如下:
查阅到的连接复用相关资料 Connection Resuse,How Connection Resuse works on multiple browsers。
我的网站使用的是同一个通配域名证书,都配置了 HTTP2,符合 rfc7540 里所说的 reuse 情况。
找到的解决方法: if you do not want connection sharing to happen, have a different IP address and/or ensure no overlaps in certificates, 我把通配域名证书改成单域名证书问题解决,非 frp 的问题。