收藏
回答

小程序请求 ERR_CONNECTION_RESET,请求未到达服务器,已排查多天未解决?

小程序请求 `https://api.zdvxsryedhtgvnmvbhgdrtysrydr.icu/api/auth/login` 时返回 `ERR_CONNECTION_RESET`,请求未到达服务器,已排查多天未解决。


## 1. 系统信息和基础库版本


- **基础库版本**:3.12.0

- **操作系统**:iOS 10.0.1(开发者工具模拟)

- **平台**:devtools

- **微信版本**:8.0.5

- **开发者工具版本**:Stable 2.01.2510250

- **运行环境**:Windows,mp,2.01.2510250; lib: 3.12.0


---


## 2. 客户端日志


### 控制台错误


```

POST https://api.zdvxsryedhtgvnmvbhgdrtysrydr.icu/api/auth/login

net::ERR_CONNECTION_RESET

请求失败: {errMsg: "request: fail", errno: undefined}

(env: Windows,mp,2.01.2510250; lib: 3.12.0)

Source: test.js? [sm]:42

```


### 系统信息对象


```

系统信息: {

  batteryLevel: 100,

  benchmarkLevel: -1,

  brand: "devtools",

  memorySize: 2048,

  model: "iPhone 12/13 (Pro)",

  ...

}

```


---


## 3. Network Headers 信息


### Request Headers


- **Request URL**: `https://api.zdvxsryedhtgvnmvbhgdrtysrydr.icu/api/auth/login`

- **Request Method**: POST

- **content-type**: `application/json`

- **Referer**: `http://127.0.0.1:61687/`

- **User-Agent**: `wechatdevtools desktopapp appservice hash/877457933 port/61940 messageProjectId/0 sid/xMTFmLpTiS runtime/2 MicroMessenger`


### Request Payload


```json

{

  "phone": "19877124635",

  "password": "123456"

}

```


### Response Headers


- **状态**:连接被重置,没有响应头


---


## 4. Network Timing 信息


- **Queued at**: 293.12 ms

- **Started at**: 293.12 ms

- **Connection Start**: (有显示,但没有具体时间)

- **Stalled**: (有显示,但没有具体时间)

- **总时长**: 936.71 ms

- **⚠️ 重要**:**没有看到 SSL 握手的具体时间**,说明 SSL 握手在更早的阶段就失败了


---


## 5. 服务器端日志分析


### 访问日志


**关键发现**:

- ❌ **访问日志中没有小程序的请求记录**

- ✅ 来自微信开发者社区的请求可以成功(200状态码)

- ✅ 说明服务器端配置正常,可以正常处理请求


**相关日志条目**:

```

2025/12/19 - 117.13.120.14 - POST /api/auth/login - 200

Referer: https://developers.weixin.qq.com/community/middlepage/href?href=https%3A%2F%2Fapi.zdvxsryedhtgvnmvbhgdrtysrydr.icu%2Fapi%2Fauth%2Flogin

```


### 错误日志


**关键发现**:

- ✅ **错误日志中没有 SSL 相关错误**

- ✅ 主要错误是 "directory index forbidden"(正常错误,不是导致问题的原因)

- ✅ 没有看到 "SSL handshake failed" 或类似的错误


---


## 6. 关键发现总结


### 1. 小程序的请求根本没有到达服务器


- 访问日志中没有小程序的请求记录(没有 `wechatdevtools` 或 `MicroMessenger` 的请求)

- 说明请求在到达服务器之前就被拒绝了


### 2. 问题发生在 SSL 握手阶段


- Network Timing 中没有 SSL 握手的具体时间

- 错误日志中没有 SSL 相关错误(因为请求没有到达服务器)

- 说明 SSL 握手在更早的阶段就失败了


### 3. 使用相同请求头时,curl 也失败


**测试结果**:

- ✅ 普通 curl 请求(无特殊请求头)→ 成功

- ❌ 使用微信开发者工具的请求头(Referer + User-Agent)→ 失败,Connection was reset


**详细错误**:

```

* Connected to api.zdvxsryedhtgvnmvbhgdrtysrydr.icu (8.152.162.146) port 443

* Recv failure: Connection was reset

* schannel: failed to receive handshake, SSL/TLS connection failed

curl: (35) Recv failure: Connection was reset

```


### 4. 服务器端配置正常


- 来自微信开发者社区的请求可以成功(200状态码)

- curl 和浏览器可以正常访问

- 说明服务器端基本配置正常


---


## 7. 已尝试的解决方案


1. ✅ 优化 Nginx SSL 配置(添加 `ssl_session_cache`、`ssl_session_timeout`、HSTS)

2. ✅ 检查证书链完整性(3个证书,顺序正确)

3. ✅ 检查证书 SAN(正确)

4. ✅ 检查防火墙和安全组(443 端口已开放)

5. ✅ 确认域名配置格式(正确)

6. ✅ 确认"不校验合法域名"已勾选

7. ✅ 等待域名配置生效(已等待多天)

8. ✅ 重启 Nginx 多次

9. ✅ 清除小程序缓存并重新编译


---


## 8. 环境信息


- **小程序 AppID**:`wx78879edfd566e8a7`

- **服务器域名**:`https://api.zdvxsryedhtgvnmvbhgdrtysrydr.icu`

- **服务器IP**:8.152.162.146

- **SSL 证书**:商用证书(宝塔 DV TLS RSA CA 2025)

- **服务器**:阿里云 ECS

- **Web 服务器**:Nginx 1.28.0

- **PHP 版本**:8.2

- **测试设备**:iOS

- **网络环境**:WiFi(开发者工具和真机调试)、4G(真机调试)


---


## 9. 路由追踪报告


### 从开发者工具所在网络到服务器的路由追踪


```

通过最多 30 个跃点跟踪

到 api.zdvxsryedhtgvnmvbhgdrtysrydr.icu [8.152.162.146] 的路由:


  1    <1 毫秒   <1 毫秒   <1 毫秒 192.168.1.1 [192.168.1.1]

  2     3 ms     4 ms     5 ms  100.72.0.1

  3    10 ms     4 ms     3 ms  222.83.227.245

  4     *        *        *     请求超时。

  5     *        *        *     请求超时。

  6     *        *        *     请求超时。

  7     *        *        *     请求超时。

  8    46 ms    45 ms    45 ms  106.38.196.230

  9     *        *        *     请求超时。

 10     *        *        *     请求超时。

 11     *        *        *     请求超时。

 12    47 ms    48 ms    51 ms  8.152.162.146


跟踪完成。

```


**结果说明**:

- ✅ 路由追踪成功完成,最终到达目标服务器(8.152.162.146)

- ✅ 总跳数:12 跳

- ✅ 最终延迟:47-51ms

- ✅ **网络路径正常,可以到达服务器**(说明问题不在网络路由层面)


---


## 10. 需要帮助的问题


1. **为什么使用微信开发者工具的请求头时,curl 也失败?**

   - 普通 curl 请求可以成功

   - 但使用相同的请求头(Referer + User-Agent)时,curl 也失败

   - 这是否说明问题在服务器端对请求头的处理?


2. **为什么小程序的请求没有到达服务器?**

   - 访问日志中没有小程序的请求记录

   - 说明请求在到达服务器之前就被拒绝了

   - 这是否与 SSL 握手有关?


3. **为什么 Network Timing 中没有 SSL 握手时间?**

   - 这是否说明 SSL 握手在更早的阶段就失败了?

   - 微信小程序对 SSL 握手有什么特殊要求?


4. **微信小程序对 SSL 证书有什么特殊要求?**

   - 为什么 curl 和浏览器可以访问,但小程序不能?

   - 是否有特定的证书品牌要求?

   - 是否有特定的证书链格式要求?


5. **是否有其他可能的原因?**

   - 是否有网络环境的限制?

   - 是否有其他配置要求?


---


## 11. 可复现代码片段


**代码片段 ID**:`a07de76a27e3e7836c4ea39d72f75eda`


**分享链接**:https://developers.weixin.qq.com/s/a07de76a27e3e7836c4ea39d72f75eda


**说明**:代码片段已创建并上传,可以在微信开发者工具中导入验证。


---


## 12. Wireshark 抓包(可选)


[待补充 - 如果需要,可以上传 .pcap 文件]


---


## 📝 总结


**最关键的发现**:

1. 小程序的请求**根本没有到达服务器**(访问日志中没有请求记录)

2. 问题发生在 **SSL 握手阶段**(Network Timing 中没有 SSL 握手时间)

3. 使用相同的请求头时,curl 也失败,说明问题很可能在服务器端

4. 服务器端配置正常(来自微信开发者社区的请求可以成功)


**已测试时间**:多天,反复验证,仍未解决


---


## 13. 根据 AI 建议的配置检查结果


### 1. User-Agent 过滤规则检查


**执行命令**:

```bash

sudo grep -i "user-agent\|user_agent" /www/server/panel/vhost/nginx/8.152.162.146.conf

```


**检查结果**:✅ **没有找到 User-Agent 过滤规则**

- 命令执行后没有输出

- 配置文件中没有 User-Agent 相关的过滤规则

- **不是导致问题的原因**


### 2. TLS 版本配置检查


**执行命令**:

```bash

sudo grep "ssl_protocols" /www/server/panel/vhost/nginx/8.152.162.146.conf

```


**检查结果**:✅ **配置正确**


**输出**:

```

ssl_protocols TLSv1.2 TLSv1.3;

```


**说明**:

- ✅ 支持 TLS 1.2(微信小程序要求的最低版本)

- ✅ 支持 TLS 1.3(最新版本)

- ✅ 不包含 TLS 1.1(已排除旧版本)

- **配置符合微信小程序的要求**


### 3. SNI 支持检查


#### 3.1 server_name 配置


**执行命令**:

```bash

sudo grep "server_name" /www/server/panel/vhost/nginx/8.152.162.146.conf

```


**检查结果**:✅ **配置正确**


**输出**:

```

server_name 8.152.162.146 api.zdvxsryedhtgvnmvbhgdrtysrydr.icu zdvxsryedhtgvnmvbhgdrtysrydr.icu;

```


**说明**:

- ✅ 包含 `api.zdvxsryedhtgvnmvbhgdrtysrydr.icu`(API 域名)

- ✅ SNI 支持已正确配置


#### 3.2 ssl_prefer_server_ciphers 配置


**执行命令**:

```bash

sudo grep "ssl_prefer_server_ciphers" /www/server/panel/vhost/nginx/8.152.162.146.conf

```


**检查结果**:✅ **配置正确**


**输出**:

```

ssl_prefer_server_ciphers on;

```


**说明**:

- ✅ 已启用服务器偏好加密套件

- **配置正确**


### 4. 总结


**所有配置都符合微信小程序的要求,但问题仍然存在。**


这说明:

1. 问题不在这些基础配置上

2. 可能是其他更深层的原因:

   - 微信小程序对 SSL 握手的特殊要求

   - 微信开发者工具的网络环境问题

   - 服务器端其他安全策略(如防火墙、WAF等)

   - 证书链的某些细节问题

回答关注问题邀请回答
收藏

1 个回答

  • 智能回答 智能回答 本次回答由AI生成
    2025-12-19
    有用
    回复
登录 后发表内容