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;。
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ì】安装
版权所有:深圳市网商在线科技有限公司