轻量服务器部署多个WordPress站点需要怎么配置Nginx?

在轻量服务器(如腾讯云轻量应用服务器、阿里云轻量、或 1C2G/2C4G 的 VPS)上部署多个 WordPress 站点,使用 Nginx + PHP-FPM 是高效且资源友好的方案。以下是简洁、安全、可维护的配置指南(以 Ubuntu 22.04/24.04 或 CentOS Stream 9 为例,推荐 Ubuntu):


✅ 一、基础环境准备(一次性)

# 更新系统
sudo apt update && sudo apt upgrade -y

# 安装必要软件(Nginx + PHP 8.2 + MySQL/MariaDB + 其他扩展)
sudo apt install nginx php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd 
  php8.2-mbstring php8.2-xml php8.2-xmlrpc php8.2-zip php8.2-opcache 
  php8.2-cli mysql-server unzip wget -y

# 启用并启动服务
sudo systemctl enable nginx php8.2-fpm mysql
sudo systemctl start nginx php8.2-fpm mysql

💡 轻量建议

  • 使用 php8.2-fpm(比 8.3 更稳定,内存占用更低)
  • 数据库推荐 MariaDB(比 MySQL 更轻量):sudo apt install mariadb-server
  • 若内存紧张(≤2GB),禁用不用的 PHP 扩展,调低 php-fpm 进程数(见下文)

✅ 二、目录结构规划(清晰隔离)

# 创建统一站点根目录(便于管理)
sudo mkdir -p /var/www/sites/{site1.com,site2.com,site3.com}

# 每个站点独立用户(可选但推荐,增强隔离)
sudo adduser --disabled-password --gecos "" wp-site1
sudo adduser --disabled-password --gecos "" wp-site2
# 将用户加入 www-data 组
sudo usermod -a -G www-data wp-site1 wp-site2
# 设置目录归属
sudo chown -R wp-site1:www-data /var/www/sites/site1.com
sudo chown -R wp-site2:www-data /var/www/sites/site2.com
sudo chmod -R 750 /var/www/sites/

✅ 三、Nginx 配置:「通用模板 + 站点专属」(关键!)

🔹 1. 创建通用 WordPress 配置片段(复用,避免重复)

sudo nano /etc/nginx/snippets/wordpress.conf
# /etc/nginx/snippets/wordpress.conf
index index.php index.html index.htm;

location / {
    try_files $uri $uri/ /index.php?$args;
}

# 处理 WordPress 后台及 REST API
location ~ .php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;  # 注意版本匹配
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

# 安全:禁止访问敏感文件
location ~ /.ht {
    deny all;
}
location ~ ^/wp-config.php$ {
    deny all;
}
location ~ ^/wp-content/.+.php$ {
    deny all;
}
location ~ ^/wp-includes/.+.php$ {
    deny all;
}

# 静态资源缓存(提升性能)
location ~ .(js|css|png|jpg|jpeg|gif|ico|svg|woff2|ttf|eot)$ {
    expires 1y;
    add_header Cache-Control "public, immutable";
}

🔹 2. 为每个站点创建独立 server 块(推荐放在 /etc/nginx/sites-available/

sudo nano /etc/nginx/sites-available/site1.com
# /etc/nginx/sites-available/site1.com
server {
    listen 80;
    server_name site1.com www.site1.com;

    root /var/www/sites/site1.com;
    access_log /var/log/nginx/site1.com.access.log;
    error_log /var/log/nginx/site1.com.error.log;

    include snippets/wordpress.conf;

    # 可选:强制 HTTPS(配好 SSL 后启用)
    # return 301 https://$server_name$request_uri;
}
# 启用站点(软链接到 sites-enabled)
sudo ln -sf /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -sf /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/

🔹 3. 启用所有站点并测试

sudo nginx -t  # ✅ 必须通过!
sudo systemctl reload nginx

✅ 四、PHP-FPM 优化(轻量服务器重点!)

编辑主配置(降低内存占用):

sudo nano /etc/php/8.2/fpm/pool.d/www.conf

修改以下关键项(以 2GB 内存为例):

; 限制进程数(动态模式更省资源)
pm = dynamic
pm.max_children = 10        # 总最大子进程数(1C2G → 5~8;2C4G → 10~15)
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500       # 防止内存泄漏,请求后重启进程

; 限制单个进程内存(可选)
php_admin_value[memory_limit] = 128M

; 关闭未使用的扩展(节省内存)
; extension=imap.so   # 注释掉不用的

✅ 重启生效:

sudo systemctl restart php8.2-fpm

✅ 五、数据库隔离(安全最佳实践)

为每个 WordPress 站点创建独立数据库 + 独立用户

-- 登录 MySQL/MariaDB
mysql -u root -p

CREATE DATABASE wp_site1 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE DATABASE wp_site2 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

CREATE USER 'wp_user1'@'localhost' IDENTIFIED BY '强密码1';
CREATE USER 'wp_user2'@'localhost' IDENTIFIED BY '强密码2';

GRANT ALL ON wp_site1.* TO 'wp_user1'@'localhost';
GRANT ALL ON wp_site2.* TO 'wp_user2'@'localhost';
FLUSH PRIVILEGES;

✅ WordPress 安装时,wp-config.php 中填对应 DB_NAME/DB_USER/DB_PASSWORD。


✅ 六、SSL(Let’s Encrypt,免费自动)

安装 Certbot 并一键签发(需域名已解析):

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d site1.com -d www.site1.com
sudo certbot --nginx -d site2.com -d www.site2.com

✅ Certbot 会自动修改 Nginx 配置启用 HTTPS,并添加自动续期定时任务。


✅ 七、日常维护小贴士

任务 命令/说明
查看各站点日志 tail -f /var/log/nginx/site1.com.access.log
检查 PHP 内存使用 sudo systemctl status php8.2-fpm + sudo htop
WordPress 自动更新 wp-config.php 加:
define('WP_AUTO_UPDATE_CORE', 'minor');
add_filter('allow_major_auto_core_updates', '__return_false');
备份脚本示例 mysqldump + tar 定时压缩 /var/www/sites/ 和数据库,推送到 OSS/COS 或本地网络盘

🚫 常见坑 & 规避

  • 不要把所有 WordPress 放在同一目录用子目录伪静态(权限混乱、插件兼容差)→ ✅ 坚持多目录多 server 块
  • fastcgi_pass 路径写错(如 php8.3-fpm.sock 但实际是 8.2)→ ✅ ls /run/php/ 确认
  • ❌ 忘记 chown 目录给 www-data 或 PHP-FPM 用户 → 导致 502/403
  • ❌ 未限制 pm.max_children → 小内存服务器 OOM 崩溃

需要我为你生成:

  • 一键部署脚本(自动建站、配 Nginx、设 DB、启 SSL)
  • 针对宝塔/LNMP 等面板的对比建议
  • Docker 多站轻量方案(更隔离,适合进阶)
  • WordPress 多站点(Multisite)是否适合你的场景?

欢迎告诉我你的具体环境(CPU/内存、域名数量、是否已有数据),我可以为你定制完整 shell 脚本 👇