在一台服务器上托管多个 WordPress 网站,可以通过 Nginx 或 Apache 配置虚拟主机(Virtual Hosts)来实现。每个网站使用不同的域名或子域名,共享同一台服务器资源但彼此独立运行。
下面分别介绍使用 Nginx 和 Apache 的配置方法:
✅ 一、准备工作
-
服务器环境要求:
- Linux 服务器(如 Ubuntu/CentOS)
- 安装 LAMP(Linux + Apache + MySQL + PHP)或 LEMP(Linux + Nginx + MySQL + PHP)
- 每个 WordPress 站点需要:
- 独立的目录(如
/var/www/site1,/var/www/site2) - 独立的数据库
- 域名解析到服务器 IP(A 记录)
- 独立的目录(如
-
示例信息:
- 网站1:
example1.com→ 目录/var/www/example1 - 网站2:
example2.com→ 目录/var/www/example2
- 网站1:
✅ 二、使用 Nginx 托管多个 WordPress 站点
步骤 1:为每个站点创建目录并部署 WordPress
sudo mkdir -p /var/www/example1
sudo mkdir -p /var/www/example2
# 下载并解压 WordPress 到对应目录
cd /tmp && wget https://wordpress.org/latest.tar.gz
tar -xzf latest.tar.gz
sudo cp -r wordpress/* /var/www/example1/
sudo cp -r wordpress/* /var/www/example2/
# 设置权限
sudo chown -R www-data:www-data /var/www/example1
sudo chown -R www-data:www-data /var/www/example2
步骤 2:为每个站点创建数据库
CREATE DATABASE wp_example1;
CREATE DATABASE wp_example2;
CREATE USER 'wpuser1'@'localhost' IDENTIFIED BY 'password1';
CREATE USER 'wpuser2'@'localhost' IDENTIFIED BY 'password2';
GRANT ALL PRIVILEGES ON wp_example1.* TO 'wpuser1'@'localhost';
GRANT ALL PRIVILEGES ON wp_example2.* TO 'wpuser2'@'localhost';
FLUSH PRIVILEGES;
步骤 3:配置 Nginx 虚拟主机
创建站点配置文件:
sudo nano /etc/nginx/sites-available/example1.com
内容如下:
server {
listen 80;
server_name example1.com www.example1.com;
root /var/www/example1;
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;
}
}
复制并修改为 example2.com:
sudo cp /etc/nginx/sites-available/example1.com /etc/nginx/sites-available/example2.com
sudo nano /etc/nginx/sites-available/example2.com
修改 server_name 和 root 路径:
server_name example2.com www.example2.com;
root /var/www/example2;
步骤 4:启用站点
sudo ln -s /etc/nginx/sites-available/example1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/example2.com /etc/nginx/sites-enabled/
# 删除默认站点(可选)
sudo rm /etc/nginx/sites-enabled/default
步骤 5:测试并重启 Nginx
sudo nginx -t # 测试配置
sudo systemctl reload nginx
✅ 三、使用 Apache 托管多个 WordPress 站点
步骤 1:同样创建目录和部署 WordPress
同上,创建 /var/www/example1 和 /var/www/example2,并部署 WordPress。
步骤 2:配置 Apache 虚拟主机
创建配置文件:
sudo nano /etc/apache2/sites-available/example1.com.conf
内容如下:
<VirtualHost *:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1
<Directory /var/www/example1>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example1_error.log
CustomLog ${APACHE_LOG_DIR}/example1_access.log combined
</VirtualHost>
同样创建 example2.com.conf:
sudo nano /etc/apache2/sites-available/example2.com.conf
<VirtualHost *:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2
<Directory /var/www/example2>
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example2_error.log
CustomLog ${APACHE_LOG_DIR}/example2_access.log combined
</VirtualHost>
步骤 3:启用站点
sudo a2ensite example1.com.conf
sudo a2ensite example2.com.conf
# 启用重写模块(WordPress 固定链接需要)
sudo a2enmod rewrite
# 重启 Apache
sudo systemctl restart apache2
✅ 四、完成安装
访问以下地址完成 WordPress 安装:
http://example1.com/wp-admin/install.phphttp://example2.com/wp-admin/install.php
根据提示填写数据库信息(前面创建的数据库和用户)。
✅ 五、注意事项
-
SSL 加密(推荐):
使用 Let’s Encrypt 免费证书,通过 Certbot 自动配置 HTTPS。sudo certbot --nginx -d example1.com -d www.example1.com -
PHP-FPM:
Nginx 必须配合 PHP-FPM 处理 PHP 请求,确保已安装并运行。 -
防火墙:
开放 80 和 443 端口:sudo ufw allow 'Nginx Full' -
性能优化:
多站点建议使用缓存插件(如 WP Super Cache)、OPcache、Redis 等提升性能。
✅ 总结
| 项目 | Nginx | Apache |
|---|---|---|
| 配置路径 | /etc/nginx/sites-available/ |
/etc/apache2/sites-available/ |
| 启用方式 | 符号链接到 sites-enabled |
a2ensite 命令 |
| 重载服务 | systemctl reload nginx |
systemctl restart apache2 |
| 推荐场景 | 高并发、静态资源多 | 兼容性好、.htaccess 支持 |
✅ 建议: 对性能要求高选 Nginx;对
.htaccess规则依赖多选 Apache。
如有需要,我可以提供一键部署脚本或 Docker 多站点方案。
云小栈