您的位置:首页 > wordpress

WordPress使用Nginx+memcached全站【zhàn】页面【miàn】缓存加速
wordpress 2024-9-22编辑:深圳网站建设阅读( WordPress 缓存 全站

Memcached是个好东西 它可以【yǐ】 由于页【yè】面【miàn】是缓存在内存里,所以减少了【le】系统的I/O操作。可【kě】以直接利用Memcached的【de】分布式特性【xìng】。可【kě】以【yǐ】直接利用缓存的过【guò】期时间,方便对页面的过【guò】期时【shí】间进行处【chù】理。

网上【shàng】找【zhǎo】了很【hěn】多教程 都不适用于wordpress 于【yú】是我【wǒ】经网上的脚本【běn】 自己改了一个

注意事项!! memcached是多核处理的 如果你是单【dān】核【hé】的服务【wù】器【qì】 在配上这个【gè】 会相当的卡 甚至【zhì】会宕【dàng】机 我之前出过【guò】了【le】很多问【wèn】题 所以【yǐ】我现在仅【jǐn】能把教程写出来【lái】 而我用了redis /哭;w;

原理

Nginx内置【zhì】了【le】Memcached模块memcached_module
它【tā】可以从【cóng】memcached中读【dú】取【qǔ】内容后直接输【shū】出,后【hòu】续的请求不再经过如php-fpm、django应【yīng】用程序处理【lǐ】,大大的提升动态页面的速度。nginx只负【fù】责从memcached中读【dú】取数据,要往【wǎng】memcached写入数据还得【dé】需【xū】要后台的应用程【chéng】序来完成,主动的【de】将要缓存的页【yè】面【miàn】缓【huǎn】存到memcached中【zhōng】,然后通过404重定向到后端去处理的。

memcached的【de】key可以通【tōng】过memcached_key变量来【lái】设【shè】置【zhì】,如以$uri。如【rú】果【guǒ】命中,那么直【zhí】接输出【chū】内容,没有命中就意味着nginx需要从应用程序请求页【yè】面。同时,我们【men】还【hái】希望该应用程【chéng】序【xù】将【jiāng】键值对【duì】写入到memcached,以便下一个请求可以直【zhí】接从memcached获取。
如果键【jiàn】值不存在,nginx将报告not found错误。最好【hǎo】的【de】方法是【shì】使用error_page指【zhǐ】定和【hé】location请求处理。同时【shí】包含"Bad
Gateway"错误和"Gateway Timeout"错【cuò】误,如【rú】:error_page 404 502 504 = @app;。

WordPress应用实例

user  www www;
worker_processes auto;
error_log  /www/wwwlogs/nginx_error.log  crit;
pid        /www/server/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;  events
    {
        use epoll;
        worker_connections 51200;
        multi_accept on;
    }

http
    {
        include       mime.types;
		#include luawaf.conf;

		include proxy.conf;

        default_type  application/octet-stream;

        server_names_hash_bucket_size 512;
        client_header_buffer_size 32k;
        large_client_header_buffers 4 32k;
        client_max_body_size 50m;

        sendfile   on;
        tcp_nopush on;

	    keepalive_timeout  75s;
	    keepalive_requests 10000;
        
        tcp_nodelay on;

        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
        fastcgi_buffer_size 64k;
        fastcgi_buffers 4 64k;
        fastcgi_busy_buffers_size 128k;
        fastcgi_temp_file_write_size 512k;
	fastcgi_intercept_errors on;

        gzip on;
        gzip_min_length  1k;
        gzip_buffers     4 16k;
        gzip_http_version 1.1;
        gzip_comp_level 3;
        gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css text/xml application/xml image/jpeg image/gif image/png application/x-httpd-php;
        gzip_vary on;
        gzip_proxied   expired no-cache no-store private auth;
        gzip_disable   "MSIE [9-22].";

        limit_conn_zone $binary_remote_addr zone=perip:10m;
		limit_conn_zone $server_name zone=perserver:10m;

        server_tokens off;
        access_log off;
        
#memcache servers load balanced
	upstream memcached {
        server     127.0.0.1:11211 weight=5 max_fails=3  fail_timeout=30s;
		keepalive 1024;
		}
#fastcgi - little load balancer
	upstream phpbackend{
		server     127.0.0.1:9000 weight=5 max_fails=5  fail_timeout=30s;
		}
server {
    listen 80;
    root  /www/server/wwwroot;
    server_name www.bt.cn;
    index index.html index.htm index.php;
    include enable-php.conf;
    client_body_timeout  1460;
    client_header_timeout 1460;
    send_timeout 1460;
    client_max_body_size 10m;
    keepalive_timeout 1300;

    location /app/                { deny all; }
    location /includes/           { deny all; }
    location /lib/                { deny all; }
    location /media/downloadable/ { deny all; }
    location /pkginfo/            { deny all; }
    location /report/config.xml   { deny all; }
    location /var/                { deny all; }

	location ~* .(jpg|png|gif|css|js|swf|flv|ico)$ {
	    expires max;
	    tcp_nodelay off;
	    tcp_nopush on;
    }
    location / {
		
        try_files $uri $uri/ @handler;
        expires 30d;
    }
   location @handler {
	rewrite / /index.php;
    }

    location ~ .php$ {
        if (!-e $request_filename) { 
            rewrite / /index.php last; 
        }  
        expires        off; ## Do not cache dynamic content
        default_type       text/html; charset utf-8;
        if ($request_method = GET) {
            set $memcached_key $request_uri;
            memcached_pass     memcached;
            error_page         404 502 = @cache_miss;
            add_header x-header-memcached true;
		}
		if ($request_method != GET) {
			fastcgi_pass phpbackend;
		}
    }
    location @cache_miss {
        # are we using a reverse proxy?
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_max_temp_file_size 0;
        
        #configure fastcgi
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_send_timeout  5m;
        fastcgi_read_timeout 5m;
        fastcgi_connect_timeout 5m;
        fastcgi_buffer_size	256k;
        fastcgi_buffers	4	512k;
        fastcgi_busy_buffers_size	768k; 
        fastcgi_param  PHP_VALUE "memory_limit = 32M";
        fastcgi_param  PHP_VALUE "max_execution_time = 18000";
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /. {
		deny all;
	}
}

}

宝塔面板

首【shǒu】先【xiān】在nginx总配置中【zhōng】连【lián】接memcached 在http{ }字段中添加

#memcache servers load balanced
	upstream memcached {
        server     127.0.0.1:11211 weight=5 max_fails=3  fail_timeout=30s;
		keepalive 1024;
		}
#fastcgi - little load balancer
	upstream phpbackend{
		server     127.0.0.1:9000 weight=5 max_fails=5  fail_timeout=30s;
		}

然后在网站中添加配置

网站-你的网站-设置-配置文件中 的 最后一个“}”前添加

  client_body_timeout  1460;
    client_header_timeout 1460;
    send_timeout 1460;
    client_max_body_size 10m;
    keepalive_timeout 1300;

    location /app/                { deny all; }
    location /includes/           { deny all; }
    location /lib/                { deny all; }
    location /media/downloadable/ { deny all; }
    location /pkginfo/            { deny all; }
    location /report/config.xml   { deny all; }
    location /var/                { deny all; }

    location ~* .(jpg|png|gif|css|js|swf|flv|ico)$ {
	    expires max;
	    tcp_nodelay off;
	    tcp_nopush on;
    }
    location / {
		
        try_files $uri $uri/ @handler;
        expires 30d;
    }
   location @handler {
	rewrite / /index.php;
    }

    location ~ .php$ {
        if (!-e $request_filename) { 
            rewrite / /index.php last; 
        }  
        expires        off; 
        default_type       text/html; charset utf-8;
        if ($request_method = GET) {
            set $memcached_key $request_uri;
            memcached_pass     memcached;
            error_page         404 502 = @cache_miss;
            add_header x-header-memcached true;
		}
		if ($request_method != GET) {
			fastcgi_pass phpbackend;
		}
    }
    location @cache_miss {

        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_max_temp_file_size 0;
        

        fastcgi_pass 127.0.0.1:9000;
        fastcgi_send_timeout  5m;
        fastcgi_read_timeout 5m;
        fastcgi_connect_timeout 5m;
        fastcgi_buffer_size	128k;
        fastcgi_buffers	4	256k;
        fastcgi_busy_buffers_size	512k; 

        fastcgi_param  PHP_VALUE "memory_limit = 32M";
        fastcgi_param  PHP_VALUE "max_execution_time = 18000";
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    location ~ /. {
		deny all;
	}

说明

这个是我改过【guò】的版本【běn】 理应宝塔面板【bǎn】下的Wordpress都可以【yǐ】用

如【rú】果提示你 什么什么错误 那【nà】你应【yīng】该检查一下 你的Nginx刚开始时【shí】是否是 编译安装【zhuāng】方【fāng】法 如果你是极速安装的方法 请重【chóng】装成编【biān】译【yì】安装

服务范围:WordPress搭建、WordPress主【zhǔ】题开发、WordPress二次开发【fā】、WordPress插件开【kāi】发
其它服【fú】务:网站建【jiàn】设、企【qǐ】业邮箱、数【shù】字【zì】证书ssl、400电话、
技术标签:企业网站、外贸网站、外贸商城、其它问题
联系方式:电话:13714666846 微信同号

企业网站定制

企业网站定制 根据企业需求,量身定制设计

企业网站定制:2800元起
添加微信 请说明来意
联系我们
站内搜索 MORE+

24小时服务热线 0755-29765948
  • 地址:深圳市罗湖区人民北路2033号206
  • 电话【huà】:0755-29765948 传真:82256610
  • 手机:13714666846 18948334877
  • 邮箱:gong@city96.com 164761418@qq.com
  • 粤ICP备14049207号
创意化数字品牌整合网络营销
营销网站让你坐等商机坐佣客户,Rss

版权所有:深圳市网商在线科技有限公司

版权所有:深圳市网商在线科技有限公司
友情连接link: