用子路径访问 WordPress:更稳定、更简单的最佳实践

在实际运维和多站点管理中,很多人常常会遇到这样的问题: 想通过子域名(例如 blog.example.com)来访问某个子目录中的 WordPress,但最终发现跳转逻辑复杂、配置繁琐,甚至会引发各种不必要的麻烦。 💡 WordPress 的设计逻辑 WordPress 是一个需要严格识别「主站 URL」的应用,站点地址(siteurl 和 home)会被写入数据库。它的架构假设访问地址是唯一且固定的,这与 Nextcloud 等可以完全依赖相对路径的应用不同。 ⚡ 子域名访问的复杂性 如果希望通过子域名根路径访问 WordPress,比如 blog.example.com: 对于已有多文件的根目录环境,或同一台服务器上有其他重要应用,这种方案会带来较高的风险和维护成本。 ✅ 子路径访问:最简单、最稳妥 相比之下,保留原有子路径(例如 https://example.com/wordpress/)具有明显优势: 在 Nginx 配置中,可以继续保留: location / { proxy_pass http://后端服务器/wordpress/; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https;} 🔥 子路径方案的适用场景 ⭐ 总结 …

多服务 Nginx 反向代理配置与细节总结

在复杂的多服务服务器环境中,通过子域名和 Nginx 反向代理将不同内网服务安全、高效地发布到公网,是一种常见且实用的架构方案。以下是一份详细的配置总结,涵盖了常用服务(如 Nextcloud、Rocket.Chat、WordPress、PVE、PBS、Webmin、Stirling PDF、phpMyAdmin、Portainer、Plex 等)在 Nginx 上的实践配置与要点。 ✅ 核心思路 ✅ 通用配置结构 server { listen 80; server_name example.com; return 301 https://$host$request_uri;}server { listen 443 ssl http2; server_name example.com; client_max_body_size 200M; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; ssl_protocols TLSv1.2 TLSv1.3; location / { proxy_pass http://192.168.x.x:port/; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection “upgrade”; …

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️⃣ …

使用 Certbot 更新并统一多子域名 SSL 证书实践总结

在服务器上使用 HTTPS 是保证安全访问的必备措施,而 Let’s Encrypt 提供了免费的 SSL 证书,结合 Certbot 工具可以非常方便地申请和更新证书。在实际场景中,往往不仅需要为主域名配置证书,还要同时支持多个子域名,比如: python-replCopyEditwww.domain.com mail.domain.com app1.domain.com app2.domain.com … 以下是一次完整实践记录,总结关键步骤与注意事项。 💡 证书现状查看 首先查看现有证书及已包含的域名: bashCopyEditcertbot certificates 输出示例: yamlCopyEditFound the following certs: Certificate Name: domain.com Domains: domain.com mail.domain.com www.domain.com Expiry Date: 2025-09-22 21:50:18+00:00 (VALID: 82 days) Certificate Path: /etc/letsencrypt/live/domain.com/fullchain.pem Private Key Path: /etc/letsencrypt/live/domain.com/privkey.pem 🔄 重新申请并添加更多子域名 为了将所有需要的子域名统一到一个证书中,执行以下命令(使用 …

Nginx 多服务反向代理方案对比与最佳实践

在自建服务器或私有云环境中,常常需要将多个 Web 服务整合到同一个公网 IP 上对外提供访问。常见的服务如 Rocket.Chat、Nextcloud、Proxmox VE、Mailcow 等,如何设计访问方式成为系统架构中一项重要决策。本文详细总结三种典型方案,并进行全面对比,帮助选择最适合的部署方式。 💡 三种典型方案 方案一:不同端口访问 思路每个服务占用一个独立的端口,用户通过域名加端口号访问,如: 优点 缺点 方案二:同域名 + 路径前缀 思路多个服务共享同一个域名,通过路径前缀区分,如: 优点 缺点 方案三:子域名 思路为每个服务配置一个独立子域名,如: 优点 缺点 ⚖️ 总体对比总结 不同端口访问 同域名 + 路径前缀 子域名 域名数量 1 1 多个子域名 端口体验 差(需手动输入) 好 好 兼容性 中 差 最好 用户体验 差 一般 最佳 配置复杂度 最简单 复杂 …

ClamAV 警告信息解析:cli_scanxz: decompress file size exceeds limits

在使用 ClamAV 进行文件扫描时,日志中经常会出现如下警告信息: pgsqlCopyEditLibClamAV Warning: cli_scanxz: decompress file size exceeds limits – only scanning 105906176 bytes 这条信息可以分解为以下几个部分: 产生原因 ClamAV 为了防止扫描过程中消耗过多系统资源,默认对解压后文件的大小设定了限制。这主要是出于性能和安全考虑,避免在面对恶意构造的巨型压缩文件时导致系统资源耗尽。 是否需要调整 若需要完整扫描所有内容,可在 clamd.conf 配置文件中通过修改如下参数进行调整: confCopyEditMaxFileSize 500M MaxScanSize 1G 需要注意,增加这些值将导致更高的内存和 CPU 占用,并可能导致扫描耗时显著增加。实际应用中,通常只在对安全性要求极高的环境或需要扫描大文件的情况下才会考虑修改。 总结 当 ClamAV 遇到解压后超出大小限制的文件时,会发出警告但继续进行扫描,仅扫描指定限制内的部分数据。这种机制是一种平衡性能与安全性的默认保护措施。在大多数场景下,可保持默认配置,无需额外干预。

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 …

Linux 服务器安全扫描日志分析及端口占用说明

在对一台 Linux 服务器执行 rkhunter(Rootkit Hunter)安全扫描时,日志中出现了有关网络端口、系统账户以及配置的多项提示和警告。以下是对这些检测结果的详细分析及处理建议。 🟠 端口扫描结果 rkhunter 检测到 TCP 7000 端口被占用,并提示可能存在恶意 IRC bot 或 rootkit。进一步查看日志显示,该端口被 /usr/sbin/mysqld 占用,即为数据库服务 mysqld 进程。 通常情况下,MySQL 默认使用 3306 端口,若在配置文件(如 my.cnf)中修改过,可能会监听其他端口(例如测试环境或多实例场景下)。 验证端口使用情况 可通过以下命令确认具体占用情况: bashCopyEditsudo lsof -i :7000 或 bashCopyEditsudo netstat -tulnp | grep 7000 确认由 mysqld 绑定后,可判定为正常使用,无需担忧。 🟢 新增用户和组 扫描中提示 /etc/passwd 和 /etc/group 文件新增了以下用户和组: 这些是正常的软件安装(如 ClamAV …

使用 ClamAV 进行 Linux 系统全盘扫描并保存日志

在 Linux 系统中,如果需要定期对整台机器进行恶意软件(病毒、木马等)扫描,ClamAV 是一个常用的免费工具。以下介绍如何进行全盘扫描,并将完整扫描结果保存为带时间戳的日志文件,方便后续查看或归档。 基础扫描命令 ClamAV 的 clamscan 工具支持递归扫描,最基本的写法如下: bashCopyEditclamscan -r / 但这样会扫描系统中的所有文件,包括 /proc、/sys、/dev 等虚拟或设备目录,这些目录不适合扫描,会产生大量错误信息。 排除系统特殊目录 为了避免扫描无意义的系统伪文件系统,可以使用 –exclude-dir 参数排除这些目录,例如: bashCopyEdit–exclude-dir=/proc –exclude-dir=/sys –exclude-dir=/dev 此外,如果还需要排除其他目录(比如存放大文件或备份的目录),也可继续添加 –exclude-dir 参数。 自动保存扫描日志 为了后期分析结果,通常需要将扫描输出同时保存为日志文件。可以结合 tee 命令实现: bashCopyEditclamscan -r –bell –exclude-dir=/proc –exclude-dir=/sys –exclude-dir=/dev / | tee /root/clamav_scan_$(date +%Y%m%d_%H%M%S).log 命令说明 是否支持「增量扫描」 ClamAV 的 clamscan 不会自动跳过已扫描过的文件,每次执行都会重新完整扫描。它不包含「增量扫描」或「缓存机制」,也不会记住上次扫描状态。 如果需要仅扫描新增或修改过的文件,需要额外实现文件变更检测(例如使用 inotify)或定期针对指定文件夹进行局部扫描。 总结 💡 …

使用 rkhunter 执行系统 Rootkit 检查及配置 SSH 安全

近期在对 Linux 系统进行安全加固时,执行了 rootkit 检查工具 rkhunter,并同步完善了 SSH 配置。以下为详细流程总结。 🕵️ rkhunter 检查流程 在执行 rkhunter –check 时,默认会在每个阶段提示「按 Enter 继续」,需要手动操作,无法一次性跑完。为实现自动化,可使用以下命令: sudo rkhunter –check –skip-keypress 如果需要将输出保存为日志文件,可追加 tee: sudo rkhunter –check –skip-keypress | tee /root/rkhunter_check_$(date +%Y%m%d_%H%M%S).log 💾 更新文件属性数据库 执行属性文件数据库更新时,常用命令如下: udo rkhunter –propupd 默认会提示确认,可使用 -y 参数自动同意: sudo rkhunter –propupd -y 🔒 SSH 配置安全性调整 rkhunter 在检测 SSH …