WordPress 配置模板(安全/集群/调试/防火墙/HTTPS 兼容)
› 社区话题 › wordpress开发 › WordPress 配置模板(安全/集群/调试/防火墙/HTTPS 兼容)

- 作者帖子
- 2025年9月8日 - 下午4:27 #1054
追光管理员为wordpress重构为一个可复用、模块化、带详细注释的 WordPress 配置模板,方便直接复制使用、按需修改、易于管理。
✅ WordPress 配置模板(安全/集群/调试/防火墙/HTTPS 兼容)
> ? 说明:本配置适用于 WordPress 高级部署场景,支持多站点集群、外部请求白名单、强制 HTTPS、调试日志、缓存优化等。
> ?️ 安全提示:请在部署前替换所有 `YOUR_*` 占位符,并根据实际环境调整白名单、数据库、密钥等。? `wp-config.php` 完整模板(可直接复制使用)
<?php /* WordPress 配置文件 - 模块化安全模板 * 适用于生产/开发环境,支持集群、HTTPS、防火墙、调试等 * ✅ 使用前请替换所有 YOUR_* 占位符 * ✅ 按模块注释修改,方便管理和协作 */ /** * ---------------------------------------------------------------- * 【缓存设置】WP Rocket 或其他缓存插件启用 * ---------------------------------------------------------------- */ define('WP_CACHE', true); // 由缓存插件自动添加,如 WP Rocket /** * ---------------------------------------------------------------- * 文件系统写入方式设置 'direct',可以避免 WordPress 尝试 FTP 或 SSH * ---------------------------------------------------------------- */ define('FS_METHOD', 'direct'); // 直接写入文件系统(需确保目录权限正确) /** * ---------------------------------------------------------------- * 【HTTPS 修正】当 WordPress 位于反向代理/负载均衡后时强制 HTTPS * 适用于 Cloudflare、Nginx、Caddy、AWS ALB 等场景 * ---------------------------------------------------------------- */ $_SERVER['HTTPS'] = 'on'; define('FORCE_SSL_LOGIN', true); // 强制登录页 HTTPS define('FORCE_SSL_ADMIN', true); // 强制后台 HTTPS /** * ---------------------------------------------------------------- * WP防火墙开启,并设定白名单 * ---------------------------------------------------------------- */ define('WP_HTTP_BLOCK_EXTERNAL', true); // 开启外部请求拦截 // ✅ 替换或扩展以下白名单,按需添加你的服务域名/IP define('WP_ACCESSIBLE_HOSTS', implode(',', [ // 本地及自身服务 '127.0.0.1', 'localhost', 'YOUR_MAIN_DOMAIN.com', 'dev.YOUR_MAIN_DOMAIN.com', 'api.YOUR_MAIN_DOMAIN.com', // 第三方服务(AI、支付、社交登录等) 'api.openai.com', 'openrouter.ai', 'api.pinecone.io', 'api.weixin.qq.com', 'graph.qq.com', 'api.weibo.com', 'openapi.alipay.com', // SEO & 搜索引擎 'www.google.com', 'www.bing.com', 'data.zz.baidu.com', 'ping.baidu.com', 'www.google.com/ping', 'www.bing.com/ping', // 工具与验证 'ahrefs.com', 'semrush.com', 'majestic.com', 'api.cloudflare.com', 'challenges.cloudflare.com', 'mirrors.tuna.tsinghua.edu.cn' ])); /** * ---------------------------------------------------------------- / WordPress MySQL 设置 ---------------------------------------------------------------- */ define('DB_NAME', 'YOUR_DB_NAME'); // 数据库名 define('DB_USER', 'YOUR_DB_USER'); // 数据库用户名 define('DB_PASSWORD', 'YOUR_DB_PASSWORD'); // 数据库密码 define('DB_HOST', 'YOUR_DB_HOST'); // 数据库主机(可带端口,如 'localhost:3307') define('DB_CHARSET', 'utf8mb4'); // 字符集(推荐) define('DB_COLLATE', ''); // 排序规则,一般留空 / 数据表前缀(增强安全性) */ $table_prefix = 'wp_'; // 建议修改为随机前缀,如 'x7a_' /** * ---------------------------------------------------------------- Authentication Unique Keys and Salts. * ---------------------------------------------------------------- */ define('AUTH_KEY', 'YOUR_AUTH_KEY'); define('SECURE_AUTH_KEY', 'YOUR_SECURE_AUTH_KEY'); define('LOGGED_IN_KEY', 'YOUR_LOGGED_IN_KEY'); define('NONCE_KEY', 'YOUR_NONCE_KEY'); define('AUTH_SALT', 'YOUR_AUTH_SALT'); define('SECURE_AUTH_SALT', 'YOUR_SECURE_AUTH_SALT'); define('LOGGED_IN_SALT', 'YOUR_LOGGED_IN_SALT'); define('NONCE_SALT', 'YOUR_NONCE_SALT'); /** * ---------------------------------------------------------------- 网站集群配置 * ---------------------------------------------------------------- */ // define('MULTISITE', true); // define('SUBDOMAIN_INSTALL', true); // 子域名模式(或 false 为子目录) // define('DOMAIN_CURRENT_SITE', 'YOUR_MAIN_DOMAIN.com'); // define('PATH_CURRENT_SITE', '/'); // define('SITE_ID_CURRENT_SITE', 1); // define('BLOG_ID_CURRENT_SITE', 1); // define('BP_ROOT_BLOG', 1); // 仅在使用 BuddyPress 时需要 // 启用 sunrise.php(高级多站点路由) // define('SUNRISE', 'on'); / * - * 【调试模式】开发时启用,生产环境请关闭 * - */ define('WP_DEBUG', false); // 开启调试 define('WP_DEBUG_LOG', false); // 记录到 /wp-content/debug.log define('WP_DEBUG_DISPLAY', false); // 不在前端显示错误(安全!) @ini_set('display_errors', 0); // 强制关闭 PHP 错误显示 / * - * 【路径与启动】不要修改以下部分 * - */ if (!defined('ABSPATH')) { define('ABSPATH', __DIR__ . '/'); } require_once ABSPATH . 'wp-settings.php';
? 模块功能详解(便于团队协作与维护)
| 模块名称 | 功能说明
| 缓存设置 | 启用 WP Rocket 或其他缓存插件的页面缓存功能。
| 文件系统 | 避免 WordPress 在更新插件/主题时弹出 FTP 登录框,需确保目录权限为 `www-data` 可写。 |
| HTTPS 修正 | 当 WordPress 位于反向代理后(如 Nginx、Cloudflare),强制识别 HTTPS 协议。
| 防火墙白名单 | 限制 WordPress 插件对外发起 HTTP 请求,仅允许白名单内域名,防止 SSRF 攻击。
| 数据库配置 | 连接 MySQL/MariaDB 的凭证,建议使用专用用户+复杂密码+非默认端口。
| 安全密钥 | 用于加密用户 Cookie、CSRF Token 等,必须唯一且复杂,可在线生成。
| 多站点集群 | 启用 WordPress Multisite,支持子域名或子目录模式,适合 SaaS 或多租户系统。
| 调试模式 | 开发阶段记录错误日志,生产环境务必关闭 `WP_DEBUG_DISPLAY` 避免信息泄露。
| 路径与启动 | WordPress 核心加载逻辑,勿修改。✅ 使用建议
1. 首次部署:
- 替换所有 `YOUR_*` 占位符。
- 从 [WordPress 官方密钥生成器](https://api.wordpress.org/secret-key/1.1/salt/) 获取新密钥。
- 根据实际服务扩展 `WP_ACCESSIBLE_HOSTS` 白名单。2. 安全加固:
- 数据库用户权限最小化。
- 文件权限:`wp-config.php` 设为 `600` 或 `640`。
- 禁用文件编辑:`define('DISALLOW_FILE_EDIT', true);`3. 版本控制:
- 将此文件纳入 Git,但不要提交真实密钥或数据库密码。
- 使用 `.env` + `wp-config-local.php` 分离敏感配置(需额外加载逻辑)。4. 多环境支持:
- 可通过 `$_SERVER['HTTP_HOST']` 或 `WP_ENV` 常量区分 dev/staging/prod,动态加载不同配置。? 进阶:环境分离示例(可选)
// 在 wp-config.php 顶部添加:
if (file_exists(__DIR__ . '/wp-config-local.php')) { include __DIR__ . '/wp-config-local.php'; return; // 跳过后续默认配置 } // ... 以下是默认/生产配置
然后创建 `wp-config-local.php` 用于本地/开发环境,不纳入版本控制。
? 总结这个模板:
- ✅ 模块化:每个功能独立注释,方便按需启用/禁用。
- ✅ 可复用:适用于大多数 WordPress 高级部署场景。
- ✅ 易管理:团队协作时,新人也能快速理解配置结构。如需我帮你生成真实密钥、环境分离脚本、或Docker 部署版配置,欢迎继续提问! ?
- 2025年9月8日 - 下午4:40 #1062
追光管理员✅ 单站点环境配置说明(极简补充)
只需从上述模板中删除或注释掉「多站点集群配置」模块即可,WordPress 会自动以单站点模式运行。
? 为什么?
WordPress 的默认运行模式就是单站点(Single Site)。
只有当你主动定义了以下常量,才会进入多站点(Multisite)模式:define('MULTISITE', true);
所以,只要不定义 `MULTISITE`,或将其设为 `false`,或直接删除相关配置块 —— 就是标准单站点环境 ✅
? 推荐操作:注释或删除以下部分
在你的配置文件中,找到并注释或删除这一整块:
/* * 【多站点集群配置】如需启用 WordPress Multisite * - */ // define('MULTISITE', true); // define('SUBDOMAIN_INSTALL', true); // 子域名模式(或 false 为子目录) // define('DOMAIN_CURRENT_SITE', 'YOUR_MAIN_DOMAIN.com'); // define('PATH_CURRENT_SITE', '/'); // define('SITE_ID_CURRENT_SITE', 1); // define('BLOG_ID_CURRENT_SITE', 1); // define('BP_ROOT_BLOG', 1); // 仅在使用 BuddyPress 时需要 // 启用 sunrise.php(高级多站点路由) // define('SUNRISE', 'on');
✅ 删除或保持注释状态 = 单站点模式
⚠️ 只要 `define(‘MULTISITE’, true);` 被执行,就会强制进入多站点? 如何验证当前是单站点?
在 WordPress 后台:
– 如果你看不到「我的站点」→「站点管理」菜单
– 如果你访问 `/wp-admin/network/` 会提示 “Multisite is not enabled”
– 说明你正在运行单站点模式 —— 一切正常!? 额外建议(单站点专用优化)
你还可以在单站点中添加以下安全/性能配置(可选):
/* 禁用主题/插件编辑器(安全) */ define('DISALLOW_FILE_EDIT', true); /* 禁用自动更新核心(生产环境推荐手动控制) */ define('WP_AUTO_UPDATE_CORE', false); /* 增加内存限制(大型插件/主题需要) */ define('WP_MEMORY_LIMIT', '256M');
✅ 最终结论
✔️单站点 = 删除/注释多站点配置块
✔️无需额外操作,WordPress 默认即单站点
✔️保留其他模块(HTTPS、防火墙、调试等)完全兼容单站点
- 作者帖子
- 在下方一键注册,登录后就可以回复啦。