Certbot 在阿里云环境中出现 “Server: Beaver / 403” 报错的排查与解决

适用范围:阿里云 ECS 主机已备案,域名解析正常,但 Certbot 在执行 HTTP-01 验证时仍返回 403 Forbidden。目标:在保持现有架构不变的前提下,成功签发一张同时覆盖多个子域名的 Let’s Encrypt 证书。说明:文中域名均为示例(如 example.com、sub1.example.com 等),与真实业务无关。 一、问题现象 执行命令: 输出提示: 人工测试: 结果: 二、原因分析 1. “Server: Beaver” 的含义 2. 与备案无直接关系 三、验证思路 四、解决方案(按稳定性排序) 方案 是否改动架构 是否依赖 80 端口 难度 特点 A. DNS-01 手动 TXT ❌ 否 ❌ 否 ★☆☆ 最安全稳妥,适用于所有环境 B. DNS-01 自动化(AliDNS API) ❌ …

一次 TLS 证书过期导致的服务故障排查记录

概要 某云服务器上的加密代理服务,在运行稳定数月后,于某日突然出现所有客户端无法连接的情况。网站访问正常,但加密代理完全失效。本文记录了从初步检测到最终定位问题的全过程。 一、问题现象 在问题出现前,所有客户端均能正常连接。某日夜间起,连接全部失败,日志中出现大量类似以下信息: 此错误表明 TLS 握手阶段证书验证失败,但当时并不清楚是客户端、服务端、还是中间环节的问题。 二、初步判断:排除外部因素 首先确认网络层和基础设施: 故障范围仅限于代理服务端口,指向服务自身配置问题。 三、证书与握手检测 通过 openssl s_client 对两个服务端口进行 TLS 测试。 网站端口(正常服务): 代理端口(故障服务): 对比结果表明: 即同一主机上存在两份不同的证书链,代理服务仍在使用旧版。 四、定位原因 进一步检查配置文件,代理服务的 TLS 设置如下: 路径正确,指向 live 目录的符号链接;但查看系统日志后发现,该进程已连续运行超过一周,而新证书的签发时间正是数天前。 说明该进程在新证书生成后从未重启过。由于此类服务不会自动重新加载证书文件,进程一直在使用内存中的旧证书。直到旧证书过期后,客户端才全部无法建立 TLS 握手。 五、解决与验证 重启服务后,再次检测: 握手恢复正常,客户端均可重新连接。 为防止同类问题再次发生,添加了自动重载机制。 六、预防措施 1. 在 Certbot 续期后自动重启相关服务 在 /etc/letsencrypt/renewal-hooks/deploy/ 下创建脚本: 每次证书续期成功后将自动重启代理服务。 2. 或使用 systemd.path 监控证书文件变化 当证书文件更新时自动触发 systemctl …

处理错误 0x80070091:无法删除空文件夹的解决方案(VHDX 虚拟磁盘环境下)

在使用 Windows 系统时,遇到错误代码 0x80070091 的情况并不少见。该错误通常出现在尝试删除某个看似空文件夹时,系统却提示“目录非空”。这一问题尤其常见于运行在 VHDX 虚拟磁盘中的系统环境中。 以下是一种经过验证的解决流程,适用于这种特定场景,且成功删除了无法正常移除的文件夹。 问题背景 在一个基于 VHDX 虚拟磁盘运行的 Windows 系统中,某路径下的文件夹(示例路径:C:\…\WinSxS\Temp\InFlight\{GUID})显示为空,但无法删除。系统提示如下错误信息: 即使在安全模式下或使用管理员权限,也无法正常移除该目录。 处理步骤 1. 使用 WinPE 启动 通过一个含有 Windows PE 的 U 盘启动设备,进入轻量级的系统维护环境。 2. 挂载 VHDX 系统镜像 3. 进入目标路径 4. 创建临时文件 5. 尝试删除文件夹 技术原理简析 此类问题的根本原因在于 NTFS 元数据损坏或残留信息异常,使系统误判目录状态。 通过在目标目录中执行一次写入操作(如创建文件),可强制系统刷新该目录的结构信息,从而将其状态更新为“真正空”,进而允许删除。 结语 该方法简单有效,特别适用于运行在 VHDX 虚拟磁盘中的 Windows 系统环境。当常规删除手段失效且提示目录非空时,可尝试此方案解决问题。

Apple 设备无法访问主域名及路径问题排查与解决

近期遇到一种情况:主域名(例如 https://example.net/)及其附加路径(如 /path1/, /path2/ 等)在苹果手机(iOS Safari)上无法访问,但子域名(如 mail.example.net, chat.example.net)可以正常访问。此问题在非苹果浏览器(如 Windows Chrome 或 Android 浏览器)中不会出现,表现为白屏、无响应或直接连接失败。 经过详细排查,总结出原因及解决方案如下。 🟢 初步排查方向 🔥 根本原因分析 在配置文件中发现,主域名使用了以下配置: proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection “upgrade”; 这两行配置用于 WebSocket 或需要协议升级的后端(如即时通讯服务),但普通 Web 服务或静态资源并不需要。如果后端(如 Apache)返回了 Upgrade: h2,h2c header,Nginx 会将此 header 透传给前端浏览器。苹果 Safari 对该 header 十分敏感,如果出现多余或错误的 Upgrade header,会直接拒绝连接,导致无法访问。 ✅ 解决方案 1️⃣ 注释多余的 header 将主域名配置中的以下两行注释: # proxy_set_header …

服务器 WordPress 出现旧域名跳转的排查与解决(Apache 配置篇)

在日常维护 WordPress 网站时,常见到一种情况:即使直接访问服务器的 内网 IP 地址,依然会被自动跳转到某个已废弃或更换的旧域名,并且即使清空浏览器缓存也无法解决。这种现象常被误认为是 Apache 配置问题,实际上通常与文件内容、数据库以及历史遗留设置相关。以下是一份完整的排查与解决记录。 💡 现象 🗂️ Apache 配置排查 首先确认 Apache 是否仍然引用了旧域名。 🔎 搜索所有 Apache 配置文件 grep -Ri “example-old-domain.com” /etc/apache2/ 如果只在已禁用的配置文件(如某些 SSL 配置)中出现,且执行了 a2dissite 禁用操作,理论上不会影响实际访问。 ✅ 确认虚拟主机状态 apachectl -S 查看输出的 VirtualHost 列表,确认没有多余的域名绑定,并且 DocumentRoot 正确指向当前 WordPress 文件目录。 🗂️ 浏览器与 DNS 缓存确认 除了浏览器缓存,还需要清理操作系统的 DNS 缓存: sudo dscacheutil -flushcache; …

恢复默认 Apache + PHP 环境并排查 WordPress 恢复异常完整指南

在服务器迁移或网站恢复过程中,常见情况是同一套 WordPress 备份在其他环境中可正常运行,但在某一台特定服务器中出现页面异常。此问题通常并非 WordPress 文件或数据库本身出错,而是该服务器上的软件环境或配置问题所导致。 本文总结如何恢复默认 Apache + PHP 环境,并系统排查可能引发 WordPress 页面异常的常见原因,供参考。 🟢 恢复默认 Apache + PHP 环境 卸载 Apache 与 PHP 首先,彻底卸载 Apache 与 PHP 所有相关软件包及配置文件: apt remove –purge apache2* php* libapache2-mod-php* -yapt autoremove -yrm -rf /etc/apache2rm -rf /etc/php 重新安装 Apache apt updateapt install apache2 -y 此时会恢复默认虚拟主机,DocumentRoot 路径为 /var/www/html。 …

Nextcloud 报错「Class ConversionApiController does not exist」的原因与解决思路

在 Nextcloud 管理后台(例如「系统概览」页面)或执行 occ setupchecks 时,可能会遇到如下错误提示: ReflectionException: Class “OCA\Files\Controller\ConversionApiController” does not exist 该错误通常出现在「安全与设置检查」环节,尤其是执行 HTTP 头部安全检查(Security Headers)时,导致提示「服务器配置错误」或「检查服务器设置时发生错误」。以下内容仅作为排查与修复思路参考,具体效果会因环境差异而不同。 🔎 报错背景 Nextcloud 在执行路由注册和安全检查时,会通过反射机制(Reflection)扫描控制器。如果控制器文件或对应路由声明缺失,就会触发 ReflectionException。 此错误中提到的 ConversionApiController 属于 Files app 的控制器之一,自 Nextcloud 30 起引入,用于文档转换 API(Conversion API)功能。如果升级过程中文件未正确更新或存在异常路由注册,便可能出现该报错。 💡 可能原因 1️⃣ Files app 文件不完整 升级 Nextcloud 或迁移文件时,Files app 内的文件(如 ConversionApiController.php)可能未正确复制或同步,导致系统无法找到相应控制器。 2️⃣ 路由或缓存异常 即使文件存在,如果系统中有旧缓存(如路由缓存、opcode 缓存)仍保留错误注册信息,依然会触发加载错误的路由,导致异常。 3️⃣ 第三方 …

WordPress 备份遇到 504 Gateway Timeout 与大文件问题的解决方案

在使用 WordPress 过程中,网站数据的安全备份至关重要。常见的备份插件(如 Duplicator)可以快速打包整个站点文件和数据库,但在实际操作中,若站点体积较大,经常会遇到 504 Gateway Time-out 错误,或者浏览器下载时中断。这些问题并非插件故障,而多由服务器配置、超时设置或下载方式不当引起。 备份流程与后台情况 Duplicator 的典型流程分为两步:先导出数据库 SQL 文件,再将站点文件夹与数据库一起压缩为一个 zip 包。在后台任务执行时,会显示「Building Backup xx%」等进度信息。 若在打包中途遇到 504 Gateway Timeout 错误,往往只是浏览器或代理超时,实际压缩进程在服务器上通常仍在继续。刷新页面或重新进入备份列表,常可看到完整备份文件已生成。 504 Gateway Time-out 的原因 当服务器或代理(如 Nginx、Cloudflare 等)在设定时间内未收到后端响应,会返回 504 错误。进行大文件打包时,后端需要长时间执行 PHP 代码,若超出配置的超时时间,就会触发该错误。 解决思路 1️⃣ 调整服务器超时设置 修改后需重启服务: bashCopyEditsudo systemctl restart nginx sudo systemctl restart apache2 sudo systemctl restart php8.1-fpm 2️⃣ …

ClamAV 更新失败与扫描执行问题排查总结

在使用 ClamAV 进行病毒库更新(freshclam)的过程中,出现了如下错误信息: vbnetCopyEditCan’t query current.cvd.clamav.net Invalid DNS reply. Falling back to HTTP mode. FreshClam previously received error code 429 or 403 from the ClamAV Content Delivery Network (CDN). This means that you have been rate limited or blocked by the CDN. You are still on cool-down until after: YYYY-MM-DD …

VPS 内存不足导致 ClamAV 卡死的处理记录

在一台配置较低(内存较小)的 VPS 上,发现系统开机后非常卡顿,几乎无法操作。通过排查,发现 ClamAV 的自动更新服务 clamav-freshclam 会在开机启动后占用大量内存,导致系统资源被耗尽,响应变慢,甚至出现 “Transport endpoint is not connected” 等异常错误。 报错信息 shellCopyEditFailed to stop clamav-freshclam.service: Transport endpoint is not connected See system logs and ‘systemctl status clamav-freshclam.service’ for details. 原因分析 临时处理方案 在系统还能有限操作时,立即执行以下步骤,避免下次开机再次启动该服务: bashCopyEditsystemctl disable clamav-freshclam.service systemctl stop clamav-freshclam.service 如果系统已经严重卡死,仍可先执行 disable 命令(只要有一丝响应),然后耐心等待系统缓慢执行完成,再重启服务器。 当命令无法执行时,可考虑通过 VPS 管理后台(控制台、面板)强制重启,随后再进行后续修复。 重启后确认 系统重启完成后,确认服务状态: bashCopyEditsystemctl …