Ubuntu 22.04 + Nginx 安装 WordPress 全流程

21
0
Share:
Ubuntu 22.04 + nginx 安装 wordpress 全流程

▎Nginx vs Apache 核心区别

特性NginxApache
并发模型事件驱动(高并发更高效)进程/线程模型(更耗资源)
静态文件性能极快(原生异步处理)依赖模块优化
.htaccess 支持需手动转换规则原生支持
配置复杂度更简洁更灵活但复杂

🚀 第一部分:Nginx 环境配置

1. 卸载 Apache(如已安装)

bash
复制
sudo systemctl stop apache2
sudo apt purge apache2* -y
sudo apt autoremove -y

2. 安装 Nginx + PHP-FPM

bash
复制
sudo apt install -y nginx php8.1-fpm
sudo systemctl enable --now nginx php8.1-fpm

3. 验证 PHP-FPM 运行状态

bash
复制
sudo systemctl status php8.1-fpm
# 应显示 "Active: active (running)"

🛠️ 第二部分:Nginx 专属配置

1. 创建 WordPress 站点配置

bash
复制
sudo nano /etc/nginx/sites-available/wordpress

粘贴以下内容(替换域名和路径):

nginx
复制
server {
    listen 80;
    server_name yourdomain.com www.yourdomain.com;
    root /var/www/html/wordpress;
    index index.php index.html;

    # 静态文件缓存(Nginx 核心优势)
    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        expires 365d;
        add_header Cache-Control "public, no-transform";
    }

    # WordPress 伪静态规则
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP 处理
    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 ~ /(wp-config.php|readme.html|license.txt) {
        deny all;
    }
}

2. 启用配置并测试

bash
复制
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default  # 删除默认配置
sudo nginx -t  # 测试配置语法
sudo systemctl reload nginx

⚡️ 第三部分:性能优化(Nginx 专属)

1. 启用 Brotli 压缩

bash
复制
sudo nano /etc/nginx/nginx.conf

在 http {} 块内添加:

nginx
复制
brotli on;
brotli_comp_level 6;
brotli_types text/plain text/css application/json application/javascript text/xml application/xml image/svg+xml;

2. 调整 PHP-FPM 进程管理

bash
复制
sudo nano /etc/php/8.1/fpm/pool.d/www.conf

修改关键参数:

ini
复制
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10

3. 配置 OPcache

bash
复制
sudo nano /etc/php/8.1/fpm/php.ini

启用以下设置:

ini
复制
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=10000
opcache.revalidate_freq=60

🔒 第四部分:安全加固(Nginx 最佳实践)

1. 限制 HTTP 方法

nginx
复制
location / {
    limit_except GET POST { deny all; }  # 只允许GET/POST
}

2. 防止 SQL 注入/XSS

nginx
复制
location ~* \.php$ {
    fastcgi_param HTTP_PROXY "";  # 防止代理头注入
    fastcgi_param WP_ENV production;
}

3. 隐藏 Nginx 版本信息

bash
复制
sudo nano /etc/nginx/nginx.conf

在 http {} 块添加:

nginx
复制
server_tokens off;
more_clear_headers 'Server';

🚨 Nginx 专属故障排查

1. 502 Bad Gateway 错误

bash
复制
# 检查 PHP-FPM 是否运行
sudo systemctl status php8.1-fpm

# 检查 sock 文件权限
ls -l /run/php/php8.1-fpm.sock
# 应显示所有者 www-data

2. 404 静态文件无法加载

nginx
复制
# 确保 Nginx 配置包含静态文件规则
location ~* \.(js|css|png|jpg)$ {
    expires 30d;
    access_log off;
}

3. 上传文件大小限制

bash
复制
# 修改 PHP 和 Nginx 限制
sudo nano /etc/php/8.1/fpm/php.ini
ini
复制
upload_max_filesize = 64M
post_max_size = 64M
bash
复制
sudo nano /etc/nginx/nginx.conf
nginx
复制
client_max_body_size 64M;

✅ 最终验证清单

  1. 访问 http://yourdomain.com 显示 WordPress 安装页
  2. curl -I http://yourdomain.com 返回 HTTP/1.1 200 OK
  3. sudo nginx -T 无语法错误
  4. PHP 信息页 <?php phpinfo(); ?> 显示 OPcache 已启用

按照此方案配置的 Nginx + WordPress 组合,在压力测试中可轻松应对 10,000+ 并发连接(Apache 通常只能处理 2,000-3,000)。

Tags维护
Share:

Leave a reply