|
|
|
@ -1,3 +1,100 @@ |
|
|
|
## 2025-01-XX - 修复 Next.js standalone 模式 sharp 缺失错误 |
|
|
|
|
|
|
|
### 修复内容 |
|
|
|
- **添加 sharp 依赖** (`site/package.json`): |
|
|
|
- 在 dependencies 中添加 `sharp: "^0.33.0"` |
|
|
|
- sharp 是 Next.js 图片优化功能所需的原生模块 |
|
|
|
|
|
|
|
- **更新 Dockerfile** (`site/Dockerfile`): |
|
|
|
- 在 runner 阶段安装必要的系统依赖:`libc6-compat` 和 `vips-dev` |
|
|
|
- 复制 package.json 到 runner 阶段 |
|
|
|
- 安装 sharp 包:`npm install sharp@^0.33.0 --production` |
|
|
|
- 确保 standalone 模式下 sharp 可用 |
|
|
|
|
|
|
|
### 修改的文件 |
|
|
|
- `site/package.json` - 添加 sharp 依赖 |
|
|
|
- `site/Dockerfile` - 在 runner 阶段安装 sharp 和系统依赖 |
|
|
|
|
|
|
|
### 问题原因 |
|
|
|
Next.js 在 standalone 模式下不会自动包含 sharp 包,而 sharp 是图片优化功能(Image Optimization API)的必需依赖。当使用 Next.js Image 组件时,需要 sharp 来处理图片优化。 |
|
|
|
|
|
|
|
### 使用说明 |
|
|
|
1. **重新构建 Docker 镜像**: |
|
|
|
```bash |
|
|
|
docker-compose -f docker-compose-https.yml build --no-cache |
|
|
|
``` |
|
|
|
|
|
|
|
2. **重启服务**: |
|
|
|
```bash |
|
|
|
docker-compose -f docker-compose-https.yml up -d |
|
|
|
``` |
|
|
|
|
|
|
|
3. **验证修复**: |
|
|
|
- 检查容器日志,确认不再出现 sharp 缺失错误 |
|
|
|
- 访问网站,确认图片正常加载和优化 |
|
|
|
|
|
|
|
变更原因:用户遇到 Next.js standalone 模式下 sharp 缺失错误,导致图片优化功能无法正常工作。通过添加 sharp 依赖并在 Dockerfile 中正确安装,修复了此问题。 |
|
|
|
|
|
|
|
## 2025-01-XX - 修复 Firefox 和移动设备访问问题:优化 SSL 配置兼容性 |
|
|
|
|
|
|
|
### 修复内容 |
|
|
|
- **优化 Nginx SSL 配置以支持 Firefox 和移动设备** (`site/nginx/nginx.conf`): |
|
|
|
- **禁用 OCSP Stapling**: |
|
|
|
- 将 `ssl_stapling` 从 `on` 改为 `off` |
|
|
|
- 将 `ssl_stapling_verify` 从 `on` 改为 `off` |
|
|
|
- 注释掉 `resolver` 和 `resolver_timeout` 配置 |
|
|
|
- **原因**:如果证书链不完整,OCSP Stapling 可能导致 Firefox 和移动设备无法验证证书,从而拒绝连接 |
|
|
|
- **扩展 SSL 密码套件兼容性**: |
|
|
|
- 添加更多兼容移动设备和旧版浏览器的密码套件 |
|
|
|
- 包括:`ECDHE-ECDSA-AES128-SHA256`、`ECDHE-RSA-AES128-SHA256`、`ECDHE-ECDSA-AES128-SHA`、`ECDHE-RSA-AES128-SHA` 等 |
|
|
|
- 排除不安全的密码套件:`!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!SRP:!CAMELLIA` |
|
|
|
- **原因**:移动设备和某些浏览器可能需要更广泛的密码套件支持 |
|
|
|
- **添加移动设备优化配置**: |
|
|
|
- 添加 `Vary "Accept-Encoding"` 响应头,确保移动设备正确解析内容类型 |
|
|
|
- 保持 HTTP/2 支持(`http2 on`) |
|
|
|
|
|
|
|
### 修改的文件 |
|
|
|
- `site/nginx/nginx.conf` - 优化 SSL 配置,禁用 OCSP Stapling,扩展密码套件兼容性 |
|
|
|
|
|
|
|
### 使用说明 |
|
|
|
1. **重启 Nginx 容器以应用配置**: |
|
|
|
```bash |
|
|
|
docker-compose -f docker-compose-https.yml restart nginx |
|
|
|
``` |
|
|
|
|
|
|
|
2. **验证配置**: |
|
|
|
- 在 Firefox 浏览器中访问网站,确认可以正常连接 |
|
|
|
- 在移动设备(手机)上访问网站,确认可以正常访问 |
|
|
|
- 使用 SSL Labs 测试工具验证 SSL 配置:https://www.ssllabs.com/ssltest/ |
|
|
|
|
|
|
|
3. **如果问题仍然存在**: |
|
|
|
- 检查证书链是否完整(证书文件应包含中间证书) |
|
|
|
- 如果证书链不完整,需要合并证书链: |
|
|
|
```bash |
|
|
|
cat /home/owen/ssl_key/smartsensiguard.cn.pem /home/owen/ssl_key/chain.pem > /home/owen/ssl_key/smartsensiguard.cn-fullchain.pem |
|
|
|
``` |
|
|
|
- 然后更新 `docker-compose-https.yml` 中的证书路径为完整证书链文件 |
|
|
|
|
|
|
|
### 问题原因分析 |
|
|
|
- **Firefox 浏览器无法访问**: |
|
|
|
- Firefox 对 SSL 证书验证更严格 |
|
|
|
- 如果 OCSP Stapling 配置不当或证书链不完整,Firefox 会拒绝连接 |
|
|
|
- 禁用 OCSP Stapling 可以避免此问题(如果证书链不完整) |
|
|
|
|
|
|
|
- **移动设备无法访问**: |
|
|
|
- 移动设备可能使用较旧的 SSL/TLS 实现 |
|
|
|
- 需要更广泛的密码套件支持 |
|
|
|
- 某些移动浏览器对 OCSP Stapling 的支持可能不完善 |
|
|
|
|
|
|
|
### 后续优化建议 |
|
|
|
如果证书链完整,可以重新启用 OCSP Stapling 以提升性能: |
|
|
|
1. 确保证书文件包含完整的证书链(包括中间证书) |
|
|
|
2. 将 `ssl_stapling` 改回 `on` |
|
|
|
3. 将 `ssl_stapling_verify` 改回 `on` |
|
|
|
4. 取消注释 `resolver` 配置 |
|
|
|
|
|
|
|
变更原因:用户反馈浏览器访问正常(除 Firefox),但手机无法访问。通过禁用 OCSP Stapling 和扩展密码套件兼容性,解决 Firefox 和移动设备的访问问题。 |
|
|
|
|
|
|
|
## 2025-01-XX - 修复 SSL 连接错误:优化 Nginx SSL 配置并添加诊断工具 |
|
|
|
|
|
|
|
### 修复内容 |
|
|
|
|