Xrayr报错TLS handshake timeout, Attempt 1

XrayR 连接 V2Board TLS 超时故障排查与解决

适用场景:XrayR 节点在启动或定时拉取配置时,无法通过 https://.../api/v1/server/... 地址获取 V2Board 配置信息,日志报 TLS handshake timeout,而在服务器上使用 ping 或 curl 测试同一地址却正常。


1. 问题表现

2025/06/02 06:15:32.674387 WARN RESTY Get "https://xin.students.xin/api/v1/server/UniProxy/config?node_id=66&node_type=shadowsocks&token=xxx": net/http: TLS handshake timeout, Attempt 1
  • 症状:XrayR 持续重试获取配置,始终超时,面板上节点离线。

  • 排查

    • ping xin.students.xin 正常;

    • curl -I https://xin.students.xin/api/v1/server/... 正常返回 200;

    • 仅 XrayR 访问失败。

2. 环境信息

组件版本备注
操作系统CentOS 7
XrayR0.9.0systemd 服务
V2Board宝塔面板 + Nginx
Nginx1.24在宝塔中开启 强制 HTTPS

3. 原因分析

  1. 强制 HTTPS 跳转
    宝塔面板的 一键强制 HTTPS 会为站点注入 301/302 重定向规则:

    if ($server_port !~ 443) {
        return 301 https://$host$request_uri;
    }
    
  2. XrayR 获取配置流程

    • 默认由 config.yml 中的 ApiAddress: 指定协议与端口。

    • 当设置为 https:// 时,XrayR 需要完成 TLS 握手;若网络抖动或证书链下载缓慢,即可能在 5 s 默认握手超时时间内失败。

  3. Curl 能访问而 XrayR 失败的原因

    • curl 支持 HTTP/2、缓存证书链,并允许重试;

    • XrayR 内置的 Resty HTTP 客户端握手超时后直接返回错误,不会降级或重试。

4. 解决方案

方案一:关闭强制 HTTPS(推荐)

  1. 登录宝塔面板 → 网站 → 站点设置 → SSL → 关闭 强制 HTTPS。

  2. 在 XrayR/config.yml 中将

    ApiAddress: "https://xin.students.xin"
    

    改为

    ApiAddress: "http://xin.students.xin"
    
  3. systemctl restart xrayr,观察日志已无报错。

完。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值