起因
在用17ce测速时,CPU占用达到了100%,php-fpm进程占用大量资源。
方法
环境:lnmp.org 一键包
需求:openresty,php,mysql,memcached,redis
插件:wpjam-basic,Nginx-helper
一个针对Wordpress效率极高的缓存方案,Openresty+Redis,这个方案将会绕过php,通过Nginx SRcache 拓展直达Redis。
- 首先需要将普通的Nginx替换为Openresty,我使用的是军哥的lnmp一键包安装的环境,若替换后还要能够执行相关指令,就必须要同时替换lnmp脚本命令中的Nginx
编译Openresty
编译完成后需要替换nginx的开机启动和lnmp中的相关路径
lnmp nginx restart
到这里,OpenResty替换Nginx的工作就已经完成了。
重启 openresty
vhost 参考配置文件
upstream redis {
server 127.0.0.1:6379;
keepalive 512;
}
server
{
listen 80;
#listen [::]:80;
server_name sep.cc;
rewrite ^(.*)$ https://$host$1 permanent;
}
server
{
listen 443 ssl http2;
#listen [::]:443 ssl http2;
server_name sep.cc;
index index.html index.htm index.php default.html default.htm default.php;
root /home/wwwroot/sep.cc;
set $skip_cache 0;
#POST请求直接调用后端
if ($request_method = POST) {
set $skip_cache 1;
}
if ($query_string != "") {
set $skip_cache 1;
}
#不要缓存以下部分
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
#不缓存登陆用户和最近评论的用户
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
location /redis-fetch {
internal ;
set $redis_key $args;
redis_pass redis;
}
location /redis-store {
internal ;
set_unescape_uri $key $arg_key ;
redis2_query set $key $echo_request_body;
redis2_query expire $key 14400;
redis2_pass redis;
}
ssl_certificate /home/wwwroot/ssl/1.crt;
ssl_certificate_key /home/wwwroot/ssl/1.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5";
ssl_session_cache builtin:1000 shared:SSL:10m;
# openssl dhparam -out /usr/local/openresty/nginx/conf/ssl/dhparam.pem 2048
ssl_dhparam /usr/local/openresty/nginx/conf/ssl/dhparam.pem;
include rewrite/wordpress.conf;
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
# include enable-php.conf;
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
location ~ .*\.(js|css)?$
{
expires 12h;
}
location ~ /.well-known {
allow all;
}
location ~ /\.
{
deny all;
}
access_log off;
location ~ [^/]\.php(/|$) {
set $key "nginx-cache:$scheme$request_method$host$request_uri";
try_files $uri =404;
srcache_fetch_skip $skip_cache;
srcache_store_skip $skip_cache;
srcache_response_cache_control off;
set_escape_uri $escaped_key $key;
srcache_fetch GET /redis-fetch $key;
srcache_store PUT /redis-store key=$escaped_key;
more_set_headers 'X-Cache $srcache_fetch_status';
more_set_headers 'X-Store $srcache_store_status';
#PHP版本号根据实际修改
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
fastcgi_param PHP_VALUE "open_basedir=$document_root:/tmp/:/proc/";
}
}
修改好后重启openresty,去wordpress后台安装Nginx-Helper插件,开启redis缓存,其他全部默认即可。
这个插件的作用是能够及时的刷新缓存
命中情况可以在服务器上执行
telnet 127.0.0.1 6379
info
keyspace_hits为命中次数,keyspace_misses为未命中次数
配置Memcached缓存
在wordpress后台安装wpjam-basic插件,然后点击扩展管理,微信扫码登录
然后将/wp-content/plugins/wpjam-basic/template/object-cache.php复制到/wp-content
即可开启Memcached缓存,点击WPJAM-系统信息可以查看详情。
教程结束。
oneinstack 一键包已集成openresty,开箱即用。
最新评论
居然家里有电烙铁。
wu先生 16 天前
我之前想买个热风枪,但是想了下也没啥用,你这,打火机干了热风枪的活,腻害呀
obaby 2024-12-09
随身wifi也能刷机,高级啊
obaby 2024-12-01
ini如何配置?
hellok123 2024-08-23
以后就跟楼主混了。
赚钱 2024-08-17
感谢分享,谢谢
电商梦里 2024-08-08
请问可以仅使用两个域名同时加速多个服务器吗
moomcake 2024-07-23