在 Nginx 或 Apache 环境下配置两个 WordPress 站点是常见的需求。下面分别介绍如何在 Nginx 和 Apache 中实现多站点部署。
✅ 前提条件
- 两套独立的 WordPress 文件(例如
wp-site1和wp-site2) - 两个域名或子域名(如
site1.com和site2.com,或site1.local和site2.local) - 每个站点使用独立的数据库(推荐)
- Web 服务器已安装并运行(Nginx/Apache + PHP + MySQL)
一、Nginx 配置两个 WordPress 站点
步骤 1:准备目录结构
/var/www/site1.com
/var/www/site2.com
将两个 WordPress 安装包分别解压到这两个目录中。
步骤 2:配置数据库
为每个站点创建独立的数据库和用户:
CREATE DATABASE wp_site1;
CREATE DATABASE wp_site2;
CREATE USER 'user1'@'localhost' IDENTIFIED BY 'password1';
CREATE USER 'user2'@'localhost' IDENTIFIED BY 'password2';
GRANT ALL PRIVILEGES ON wp_site1.* TO 'user1'@'localhost';
GRANT ALL PRIVILEGES ON wp_site2.* TO 'user2'@'localhost';
FLUSH PRIVILEGES;
步骤 3:配置 Nginx 虚拟主机(server block)
编辑或创建两个配置文件(推荐放在 /etc/nginx/sites-available/):
📁 /etc/nginx/sites-available/site1.com
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 根据你的PHP版本调整
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
📁 /etc/nginx/sites-available/site2.com
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2.com;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /.ht {
deny all;
}
}
步骤 4:启用站点
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
# 测试配置
sudo nginx -t
# 重启 Nginx
sudo systemctl reload nginx
💡 提示:如果使用 HTTPS,还需为每个站点配置 SSL 证书(可用 Let’s Encrypt)。
二、Apache 配置两个 WordPress 站点
步骤 1:准备目录
/var/www/html/site1
/var/www/html/site2
上传对应的 WordPress 文件。
步骤 2:配置虚拟主机(VirtualHost)
编辑或创建配置文件(通常位于 /etc/apache2/sites-available/):
📁 /etc/apache2/sites-available/site1.conf
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/html/site1
<Directory /var/www/html/site1>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
📁 /etc/apache2/sites-available/site2.conf
<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot /var/www/html/site2
<Directory /var/www/html/site2>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
步骤 3:启用站点并重启 Apache
sudo a2ensite site1.conf
sudo a2ensite site2.conf
# 启用重写模块(WordPress 友好链接需要)
sudo a2enmod rewrite
# 测试配置
sudo apache2ctl configtest
# 重启 Apache
sudo systemctl restart apache2
三、后续操作
-
访问域名完成安装
- 打开
http://site1.com和http://site2.com - 按照 WordPress 安装向导填写数据库信息(使用各自的数据库)
- 打开
-
设置
.htaccess(仅 Apache)- 确保
.htaccess文件存在且可读,用于处理固定链接。 - 如果权限问题,可能需要调整 Apache 的
AllowOverride设置。
- 确保
-
DNS 解析(生产环境)
- 将
site1.com和site2.com指向服务器 IP 地址。
- 将
-
本地测试(开发环境)
- 修改本地
hosts文件:127.0.0.1 site1.com 127.0.0.1 site2.com
- 修改本地
总结对比
| 特性 | Nginx | Apache |
|---|---|---|
| 配置文件位置 | /etc/nginx/sites-available/ |
/etc/apache2/sites-available/ |
| 启用站点方式 | 符号链接 + nginx -t + reload |
a2ensite + systemctl restart |
| URL 重写支持 | try_files 指令 |
.htaccess + AllowOverride All |
| 性能 | 更高并发性能 | 功能更灵活,适合 .htaccess |
✅ 推荐:
- 若追求性能与简洁 → 选 Nginx
- 若习惯
.htaccess或迁移老项目 → 选 Apache
无论哪种方式,关键是:每个站点独立目录 + 独立数据库 + 正确的虚拟主机配置。
如有进一步需求(如 HTTPS、缓存、CDN),可继续扩展配置。
云小栈