当前位置:网站首页 >  攻略

零基础可直接复制的WordPress Nginx PHP MySQL全链路服务器实操配置优化指南

时间:2026年05月25日 20:04:36 来源:易频IT社区

前置准备

请确认已完成LNMP基础环境搭建(使用lnmp.org官方一键包,避免环境不兼容),服务器为CentOS 7/8、Ubuntu 18.04/20.04/22.04系统,且已绑定WordPress域名、配置好SSL证书。

第一部分:Nginx配置优化

1.1 全局Nginx配置

编辑/usr/local/nginx/conf/nginx.conf(lnmp一键包默认路径):

```nginx user www www; worker_processes auto; 自动匹配CPU核心数,最多不超过32 worker_cpu_affinity auto; 自动绑定CPU核心,提升性能 error_log /home/wwwlogs/nginx_error.log crit; 只记录严重错误,减少磁盘IO pid /usr/local/nginx/logs/nginx.pid; worker_rlimit_nofile 65535; 提升最大打开文件数 events { use epoll; Linux高性能IO模型 worker_connections 65535; 单worker最大连接数 multi_accept on; 允许一次性接受多个连接 } http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; 解决长域名无法解析问题 client_header_buffer_size 32k; 优化请求头大小 large_client_header_buffers 4 32k; 大请求头额外分配 client_max_body_size 100m; 允许上传100M文件(可按需调整) sendfile on; 启用零拷贝传输,静态文件加速 tcp_nopush on; 配合sendfile,一次性发送数据包 tcp_nodelay on; 禁用Nagle算法,提升实时性 keepalive_timeout 60; 保持连接60秒 client_body_timeout 10; 客户端请求体超时 client_header_timeout 10; 客户端请求头超时 send_timeout 10; 服务器发送超时 Gzip压缩 gzip on; gzip_min_length 1k; 小于1k不压缩,避免反降性能 gzip_buffers 4 16k; 压缩缓冲区 gzip_comp_level 6; 压缩等级6(性价比最高) gzip_types text/plain text/css text/xml text/javascript application/json application/javascript application/xml+rss application/rss+xml application/xml application/xhtml+xml image/svg+xml image/x-icon; 压缩常见格式,排除图片/视频(已压缩) gzip_vary on; 给代理服务器加Vary头,避免缓存问题 gzip_disable "MSIE [1-6]\."; 兼容IE6及以下 开启文件缓存(静态资源) open_file_cache max=10240 inactive=60s; 最多缓存10240个文件,60秒未访问删除 open_file_cache_valid 60s; 60秒检查一次文件有效性 open_file_cache_min_uses 1; 访问1次就缓存 open_file_cache_errors on; 缓存文件不存在等错误信息 include vhost/.conf; } ```

保存后执行lnmp nginx reload平滑重启生效。

1.2 WordPress站点专属Nginx配置

编辑/usr/local/nginx/conf/vhost/你的域名.conf

```nginx server { listen 80; listen 443 ssl http2; 强制开启HTTP/2,需先配置SSL server_name 你的域名 www.你的域名; index index.php index.html index.htm; root /home/wwwroot/你的域名; SSL配置(使用lnmp一键包会自动生成,无需修改) ssl_certificate /usr/local/nginx/conf/ssl/你的域名/fullchain.pem; ssl_certificate_key /usr/local/nginx/conf/ssl/你的域名/privkey.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; add_header Strict-Transport-Security "max-age=63072000" always; 禁止访问隐藏文件 location ~ /\. { deny all; access_log off; log_not_found off; } WordPress伪静态规则 location / { try_files $uri $uri/ /index.php?$args; } PHP处理 location ~ [^/]\.php(/|$) { fastcgi_pass unix:/tmp/php-cgi.sock; lnmp一键包默认PHP-FPM socket fastcgi_index index.php; include fastcgi.conf; 禁用pathinfo(安全+性能),如果插件必须用pathinfo,可单独调整 fastcgi_split_path_info ^(.+?\.php)(/.)$; set $path_info $fastcgi_path_info; fastcgi_param PATH_INFO $path_info; try_files $fastcgi_script_name =404; 严格检查PHP文件存在性 } 静态资源缓存 location ~ .\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico|webp)$ { expires 30d; 缓存30天 access_log off; add_header Cache-Control "public, immutable"; } location ~ .\.(js|css|svg|woff|woff2|ttf|eot)$ { expires 7d; 缓存7天 access_log off; add_header Cache-Control "public, immutable"; } access_log /home/wwwlogs/你的域名.log; } ```

保存后再次执行lnmp nginx reload

第二部分:PHP-FPM配置优化

零基础可直接复制的WordPress Nginx PHP MySQL全链路服务器实操配置优化指南

先查看当前PHP版本:php -v,假设为PHP 8.1(推荐用PHP 7.4以上版本,性能提升明显),编辑/usr/local/php/etc/php-fpm.conf

```ini [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = notice 只记录通知级以上错误 emergency_restart_threshold 10 1分钟内10个进程崩溃则重启 emergency_restart_interval 1m process_control_timeout 10s 子进程等待主进程信号超时 [www] user = www group = www listen = /tmp/php-cgi.sock listen.owner = www listen.group = www listen.mode = 0666 pm = dynamic 动态进程模式,适合中小站点 pm.max_children = 50 最大子进程数(CPU核心数×20,单核1G内存最大10,2核2G最大30,以此类推,避免内存溢出) pm.start_servers = 5 启动时的子进程数(CPU核心数×2) pm.min_spare_servers = 2 最小空闲子进程数(CPU核心数×1) pm.max_spare_servers = 10 最大空闲子进程数(CPU核心数×4) pm.max_requests = 1024 每个子进程处理1024次请求后自动重启,避免内存泄漏 request_terminate_timeout = 30s 单个请求超时30秒自动终止,避免死锁 request_slowlog_timeout = 2s 单个请求超过2秒记录慢日志 slowlog = /home/wwwlogs/php-slow.log ```

同时优化/usr/local/php/etc/php.ini(搜索对应参数修改):

```ini max_execution_time = 30 单个PHP脚本最大执行时间 max_input_time = 60 最大接收POST/GET时间 memory_limit = 256M 单个PHP脚本最大内存(可按需调整到512M) post_max_size = 100M 最大POST数据(和Nginx的client_max_body_size一致) upload_max_filesize = 100M 最大上传文件(同上) date.timezone = Asia/Shanghai 设置时区为中国 opcache.enable=1 开启OPcache(PHP 7以上默认开启,但需验证) opcache.memory_consumption=256 OPcache内存大小(2G内存以下128M,2-4G256M) opcache.interned_strings_buffer=16 字符串常量缓存大小 opcache.max_accelerated_files=10000 最多缓存10000个PHP文件 opcache.revalidate_freq=60 60秒检查一次PHP文件是否更新 opcache.fast_shutdown=1 快速关闭(PHP 7以上已废弃,但保留不报错) opcache.enable_cli=0 关闭CLI模式OPcache ```

保存后执行lnmp php-fpm reload

第三部分:MySQL配置优化

先查看当前MySQL版本:mysql -V,假设为MariaDB 10.6(lnmp一键包默认,和MySQL兼容),编辑/etc/my.cnf(CentOS)或/etc/mysql/mariadb.conf.d/50-server.cnf(Ubuntu):

```ini [mysqld] user = mysql port = 3306 socket = /tmp/mysql.sock pid-file = /usr/local/mysql/var/mysql.pid basedir = /usr/local/mysql datadir = /usr/local/mysql/var 基础配置 default-storage-engine = InnoDB 强制用InnoDB,性能+事务安全 character-set-server = utf8mb4 支持emoji collation-server = utf8mb4_unicode_ci skip-name-resolve 禁用DNS解析,提升连接速度 max_connections = 200 最大连接数(中小站点100-300足够) table_open_cache = 2048 打开表缓存数 table_definition_cache = 2048 表定义缓存数 InnoDB优化(关键) innodb_buffer_pool_size = 1G 核心参数,设为服务器内存的50%-70%(2G内存1G,4G内存2.5G,8G内存5G) innodb_log_file_size = 256M 日志文件大小,设为innodb_buffer_pool_size的25% innodb_log_buffer_size = 64M 日志缓冲区大小 innodb_flush_log_at_trx_commit = 2 每1秒刷日志到磁盘,性能高但断电丢失1秒数据(个人博客完全可接受) innodb_file_per_table = 1 每个表单独存文件,方便管理 innodb_flush_method = O_DIRECT 直接IO,避免双缓存 innodb_read_io_threads = 8 读IO线程数(CPU核心数×2) innodb_write_io_threads = 8 写IO线程数(同上) 查询缓存(MySQL 8.0已删除,MariaDB 10.6仍保留但建议关闭,命中率低) query_cache_type = 0 query_cache_size = 0 慢查询日志 slow_query_log = 1 slow_query_log_file = /home/wwwlogs/mysql-slow.log long_query_time = 2 超过2秒记录 log_queries_not_using_indexes = 1 记录未使用索引的查询 ```

保存后执行lnmp mysql restart(必须重启,不能平滑)。

第四部分:WordPress后台极简配置

进入WordPress后台:

  • 设置-固定链接:选择“文章名”或“自定义结构(/%postname%.html)”,保存生效伪静态
  • 安装WP Super Cache插件:搜索安装启用,进入“设置-WP Super Cache”,勾选“启用缓存功能”,选择“简单模式”,点击“更新状态”

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图