XTLS / Xray-core

Xray, Penetrates Everything. Also the best v2ray-core, with XTLS support. Fully compatible configuration.
https://t.me/projectXray
Mozilla Public License 2.0
24.19k stars 3.81k forks source link

使用Nginx监听443,用WS/HTTPUpgrade传递到Xray时,当客户端Xray配置address填的VPSIP,默认没带host(SNI)的网址 #3173

Closed chika0801 closed 5 months ago

chika0801 commented 5 months ago

以 WS-TLS 为例

服务端Nginx监听443,配置里使用了 ssl_reject_handshake 防止被扫SSL证书中的域名

客户端Xray配置。当address填写VPS的IP,serverName填写VPS上SSL证书中的网址,此时若不写 WS中的 "host": "" 也加上VPS上SSL证书中的网址,就会不通。

如果在address填写域名,serverName留空(会默认使用address填的域名)或也手动填域名。此时写不写 WS里的 "host" 值,客户端能通。

建议增加一个逻辑, serverName的值(域名)默认也为 "host" 的值。如果用户手动填了"host",则用用户填的。

如果用 HTTPUpgrade-TLS 同样客户端也有这个问题。

PS: sing-box当客户端在这条件下,没这问题,猜测sing-box做了类型逻辑处理。

当然要说如果nginx配置中不用 ssl_reject_handshake,这条件不存在了,也不会遇到这问题。

至于用 ssl_reject_handshake,想到的原因是防止被扫SSL中的网址,作用是避免当别人REALITY的目标网址。。。

Fangliding commented 5 months ago

加一个不难 不过祖宗之法该不该改

chika0801 commented 5 months ago

gRPC用同类的nginx配置时,没这问题。

chika0801 commented 5 months ago

代码本身一直是这样设计的,不需求强行修改了,所以关闭了这个。

当遇到这种情况客户端知道怎么解决,就行。