Windows XAMPP WordPress 站点优化记录|PHP8.3 + MariaDB11.4 抗CC扫描调优

服务器环境:阿里云Windows Server 2012 R2,4G内存,单C盘,XAMPP,WordPress 7.1.4,PHP 8.3.36,MariaDB 11.4.13。痛点:正常访问平稳,遇到扫描、CC攻击时CPU直接跑满100%,本次优化控制并发、缩短无效连接回收、收紧OPcache、数据库参数,配合云锁做应用层防护,不改动系统虚拟内存。额外补充Windows系统层优化,关闭无用电源策略、NTFS最后访问时间写入,减少磁盘额外IO开销。

一、Windows系统底层优化(Server通用,减少磁盘IO、后台唤醒)

1. 电源策略优化(服务器固定高性能,避免降频、休眠、待机)

以管理员身份打开命令提示符CMD执行,设置电源方案为高性能,关闭CPU节能、磁盘休眠:

powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
powercfg /change standby-timeout-ac 0
powercfg /change hibernate-timeout-ac 0
powercfg /change disk-timeout-ac 0

说明:AC为通电状态,服务器不允许休眠、待机、磁盘自动停转,防止突发降频、IO卡顿。

2. 关闭NTFS最后访问时间写入(重点,减少频繁文件访问带来的磁盘写操作)

NTFS默认每次读取文件都会更新“最后访问时间戳”,WP、Apache、MariaDB大量读文件时会产生大量无效写IO,单C盘环境收益明显。管理员CMD执行:

fsutil behavior set disablelastaccess 1

查看当前状态(确认是否生效):

fsutil behavior query disablelastaccess

值为1代表已关闭;值0为开启。该设置无需重启,即时生效。

备注:关闭lastaccess不影响文件修改时间(mtime),不会影响WordPress、PHP、数据库程序正常运行;依赖文件访问时间审计的业务不要使用。

二、PHP 配置 php.ini 优化(OPcache + PHP基础限制)

配置文件路径:C:\xampp\php\php.ini,找到 [opcache] 区块,修改或新增下面参数;前面带分号 ; 的需要删除分号才能生效。

OPcache 核心配置

opcache.memory_consumption=96
opcache.max_accelerated_files=6000
opcache.revalidate_freq=60
opcache.validate_timestamps=1

PHP基础安全&资源限制(同文件内配置)

memory_limit = 256M
max_execution_time = 30
max_input_time = 30
upload_max_filesize = 20M
post_max_size = 20M
display_errors = Off

修改完成后,重启Apache服务,在WordPress后台OPcache面板验证参数是否生效。

三、Apache 配置优化(httpd-mpm.conf + httpd.conf)

原则:不加载不存在模块,不复制网上无效指令,Windows版Apache原生支持,控制线程上限,防止攻击瞬间占满线程池。

1. httpd-mpm.conf mpm_winnt 段(Windows专用)

<IfModule mpm_winnt_module>
    ThreadsPerChild 45
    ThreadLimit 60
    MaxConnectionsPerChild 5000
    AcceptFilter http none
</IfModule>

其他系统MPM段落保持原样,无需改动。AcceptFilter http none 解决Windows下半开连接堆积、卡死CPU问题。

2. httpd.conf 基础连接参数

KeepAlive On
MaxKeepAliveRequests 80
KeepAliveTimeout 2
Timeout 40

找不到对应参数则跳过,只改存在的配置项。缩短超时时间,快速回收爬虫、扫描器的无效连接。

3. 关闭目录浏览(安全)

找到目录配置,删除Indexes,禁止扫描器遍历目录探测:

Options FollowSymLinks

4. 静态资源压缩+浏览器缓存(mod_deflate、mod_expires)

先确认模块加载(去掉行首#注释):

LoadModule deflate_module modules/mod_deflate.so
LoadModule expires_module modules/mod_expires.so

配置缓存规则,放在httpd.conf末尾或者站点虚拟主机配置:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType image/jpg "access plus 7 days"
    ExpiresByType image/jpeg "access plus 7 days"
    ExpiresByType image/gif "access plus 7 days"
    ExpiresByType image/png "access plus 7 days"
    ExpiresByType text/css "access plus 3 days"
    ExpiresByType application/javascript "access plus 3 days"
</IfModule>
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json
</IfModule>

作用:图片、样式、JS交由浏览器缓存,减少重复请求,降低攻击时CPU消耗。

四、MariaDB my.ini [mysqld] 数据库优化

原有参数保留,只追加/修改,适配MariaDB11.4,不强制修改ib_logfile(低风险版本)。

# 原有保留
#innodb_log_file_size = 5M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 2
innodb_lock_wait_timeout = 50

# 新增配置
max_connections = 50
slow_query_log = 1
long_query_time = 2
innodb_buffer_pool_size = 768M
key_buffer_size = 64M

说明:innodb_flush_log_at_trx_commit=2 适合博客资讯类非交易站点,降低磁盘刷写压力;slow_query_log开启慢查询日志,超过2秒SQL记录,用来排查恶意SQL探测。如果不想持续写日志,slow_query_log = 0。

⚠️ 注意:如果取消注释修改 innodb_log_file_size,需要停止MariaDB,删除data目录 ib_logfile0、ib_logfile1 再启动,否则启动失败,新手建议保持注释。

修改顺序:停止Apache → 停止MariaDB → 保存my.ini → 先启动数据库,再启动Apache。

五、WordPress程序层面优化

  • 1. 开启页面缓存插件,优先静态缓存,CC攻击时减少PHP+MySQL动态计算
  • 2. 拦截/关闭 xmlrpc.php,扫描器高频攻击接口
  • 3. 关闭REST API匿名访问,防止批量遍历wp-json
  • 4. SEO插件关闭实时统计、自动抓取功能,减少后台定时任务消耗CPU

六、防护分工(云锁为主,Apache为辅)

核心思路:不在Apache里堆第三方限流模块(Windows XAMPP兼容性差),限流交给云锁应用层防护
  • 云锁:CC频率限制、SQL注入、XSS、恶意路径拦截、恶意IP拉黑
  • Apache:线程上限、连接超时、静态缓存、gzip压缩
  • PHP:脚本最大执行时间,恶意脚本自动终止
  • MySQL:连接上限、慢查询日志排查恶意查询
  • 系统层:高性能电源策略、关闭NTFS最后访问时间,降低磁盘IO开销

阿里云安全组只放行80、443端口,其余端口按需封闭,RDP远程桌面限制来源IP。

七、监控判断标准

  • 正常状态:内存占用50%-70%,CPU低负载
  • 攻击触发:云锁优先拦截,Apache线程上限45,不会无限创建进程打满CPU
  • 如果攻击依旧CPU跑满:下调 ThreadsPerChild 至35,牺牲并发上限换取稳定性
  • OPcache命中率低于80%,可酌情下调 max_accelerated_files

八、避坑清单

  • 不要复制网上不存在的Apache模块指令,容易造成Apache启动失败
  • 不新增第三方Apache限流模块,Windows环境稳定性差
  • OPcache内存不要设置过大,避免并发上来挤压内存、触发C盘虚拟内存交换
  • 虚拟内存保持阿里云默认5632M不动,不手动调整
  • 关闭NTFS disablelastaccess后,不影响文件修改时间,审计类业务慎用
  • 服务器电源方案设置高性能,不要平衡模式,避免CPU降频

九、修改后生效顺序

  1. 执行系统命令(电源、fsutil,即时生效)
  2. 保存php.ini、my.ini、Apache配置
  3. 停止Apache
  4. 停止MariaDB
  5. 启动MariaDB
  6. 启动Apache
  7. 后台OPcache面板、phpinfo页面校验参数

标签:XAMPP优化,WordPress调优,PHP8.3 OPcache,MariaDB11.4,Windows服务器抗CC,云锁防护,Windows Server磁盘IO优化,NTFS disablelastaccess,服务器电源策略

分享到:

用微信扫一扫,分享给朋友


发布日期:

所属分类: SEO 网站运营 标签: