-
Notifications
You must be signed in to change notification settings - Fork 104
nginx在http2回落时未能传递HSTS参数 #148
Comments
你的情况应该是,vs前置,然后回落到nginx,是吧。 那么nginx怎么设置 add_header 完全是nginx自己的事情,和vs没关系,因为nginx是下游。 你试试普通的http回落或者ws回落,应该 add_header 都正常吧。 是不是h2的问题呢 |
我尝试把grpc注释掉了,变成了普通的TCP+TLS,上网正常,不过测试还是没有HSTS,看来不是H2的问题?因为我之前用xray就是TCP+TLS回落到nginx,一样的架构,测试是有HSTS的,说明回落可以做到这个 |
搞不懂. 想不通。明明nginx做什么完全和vs无关的,vs只负责转发一下。 |
你看看这个链接,有没有用 https://itlanyan.com/be-careful-with-nginx-add_header-directive/ 另外你再用完全相同的配置用v2ray测一下 |
经过最新测试,只要在server listen那里写了http2就不行,测试http失败,也没有HSTS,删掉http2就正常。但是我这个是gRPC的回落端口,感觉删掉http2不太好吧 |
那么这样看来,就可能和nginx的http2有一定的关系。我也不知如何是好。。。 总之,不能算是vs的问题了吧。 |
有道理,那我先关了吧 |
佬,除了这个HSTS的问题我又发现了个新问题:之前我xray回落nginx有一个listen的server是443回落过来的,servername为空的那种,返回一个403,结果现在变成listen http2后,返回403正常,但是伪装站打不开了,这个403的listen强行占据了所有回落,只有删掉这个listen才正常,不知道我这样简单说明白了没?目前感觉gRPC的回落虽然很先进,但是跟nginx的协同似乎产生了不少问题,不一定是VS的问题,但是从伪装的角度来看我们也需要注意下 |
看Xray文档发现了: 有需要时,VLESS 才会尝试读取 TLS ALPN 协商结果,若成功,输出 info realAlpn = 到日志。 用途:解决了 Nginx 的 h2c 服务不能同时兼容 http/1.1 的问题,Nginx 需要写两行 listen,分别用于 1.1 和 h2c。 注意:fallbacks alpn 存在 "h2" 时,Inbound TLS 需设置 "alpn":["h2","http/1.1"],以支持 h2 访问。 看来似乎能通过ALPN回落解决我这个问题 |
我按照H2和http1.1做了详细分流回落,在ssllabs重新测试,HTTP request不再是fail了(感觉fail是一种特征),而是变成了400 bad request,但感觉这还是一种特征,不像是正常网站通常给出的反应,另外HSTS参数还是没有传递。 附上我的配置 [[listen]] [[fallback]] [[fallback]] [[dial]]
|
经过长时间摸索终于解决了问题!ssllabs跑出了A+! [[listen]] [[fallback]] [[fallback]]
|
之前在用*ray的回落时,如果在nginx的接收回落端口添加HSTS参数:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
这个参数是可以被传递的,这样在 https://www.ssllabs.com/ssltest 测试网址的话会显示HSTS有开启,并且评分为A+
但是经测试,VS的回落没法传递这一参数。
我只用了gRPC回落,不知道其他协议回落如何。
不过这个功能其实不是很重要,GFW探测应该也不管这个,纯粹是无聊测网站分数才会看,因此如果大佬觉得不知道怎么改 / 改这个太麻烦 / 不需要改的话,直接关issue也OK(能改一下当然是坠好滴)
The text was updated successfully, but these errors were encountered: