diff --git a/readme.txt b/readme.txt
index d96083d..563e33a 100644
--- a/readme.txt
+++ b/readme.txt
@@ -4,7 +4,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
Tags: cache, page cache, full page cache, nginx, memcached, apc, speed
Requires at least: 3.0
Tested up to: 4.3.1
-Stable tag: 1.10.0
+Stable tag: 1.10.1
License: GPLv3
License URI: http://www.gnu.org/licenses/gpl-3.0.html
@@ -80,6 +80,7 @@ Many thanks for donations, contributors, supporters, testers & bug reporters:
* Christian Kernbeis
* Gausden Barry
* Maksim Bukreyeu
+* Lissome Hong Kong Limited
== Installation ==
@@ -129,6 +130,12 @@ Version numbering logic:
* every .B version indicates new features.
* every ..C indicates bugfixes for A.B version.
+= 1.10.1 =
+*2015-10-30*
+
+* fixed nginx configuration sample snippets
+* nginx configuration moved from Settings tab to Help tab, so if you're looking for the "nginx" tab, you need to look under "Help" on the WP-FFPC Settings page.
+
= 1.10.0 =
*2015-10-23*
diff --git a/wp-ffpc-class.php b/wp-ffpc-class.php
index 8a1e52f..6f53de0 100644
--- a/wp-ffpc-class.php
+++ b/wp-ffpc-class.php
@@ -261,6 +261,8 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
}
}
}
+
+ add_filter('contextual_help', array( &$this, 'plugin_admin_nginx_help' ), 10, 2);
}
/**
@@ -371,6 +373,28 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
return $contextual_help;
}
+ /**
+ * admin help panel
+ */
+ public function plugin_admin_nginx_help($contextual_help, $screen_id ) {
+
+ /* add our page only if the screenid is correct */
+ if ( strpos( $screen_id, $this->plugin_settings_page ) ) {
+ $content = __('
Sample config for nginx to utilize the data entries ', 'wp-ffpc');
+ $content .= __('This is not meant to be a copy-paste configuration; you most probably have to tailor it to your needs.
', 'wp-ffpc');
+ $content .= __('In case you are about to use nginx to fetch memcached entries directly and to use SHA1 hash keys, you will need an nginx version compiled with HttpSetMiscModule . Otherwise set_sha1 function is not available in nginx. ', 'wp-ffpc');
+ $content .= '' . $this->nginx_example() . '
';
+
+ get_current_screen()->add_help_tab( array(
+ 'id' => 'wp-ffpc-nginx-help',
+ 'title' => __( 'nginx example', 'wp-ffpc' ),
+ 'content' => $content,
+ ) );
+ }
+
+ return $contextual_help;
+ }
+
/**
* admin panel, the admin page displayed for plugin settings
*/
@@ -781,12 +805,6 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
-
-
- In case you are about to use nginx to fetch memcached entries directly and to use SHA1 hash keys, you will need an nginx version compiled with HttpSetMiscModule . Otherwise set_sha1 function is not available in nginx.
- nginx_example(); ?>
-
-
@@ -909,7 +927,6 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
'debug' => __( 'Debug & in-depth', 'wp-ffpc'),
'exceptions' => __( 'Cache exceptions', 'wp-ffpc'),
'servers' => __( 'Backend settings', 'wp-ffpc'),
- 'nginx' => __( 'nginx', 'wp-ffpc'),
'precache' => __( 'Precache & precache log', 'wp-ffpc')
);
@@ -1060,10 +1077,10 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
$nginx = file_get_contents ( $this->nginx_sample );
if ( isset($this->options['hashkey']) && $this->options['hashkey'] == true )
- $mckeys = 'set_sha1 $memcached_sha1_key $memcached_raw_key;
- set $memcached_key DATAPREFIX$memcached_sha1_key;';
+ $mckeys = ' set_sha1 $memcached_sha1_key $memcached_raw_key;
+ set $memcached_key DATAPREFIX$memcached_sha1_key;';
else
- $mckeys = 'set $memcached_key DATAPREFIX$memcached_raw_key;';
+ $mckeys = ' set $memcached_key DATAPREFIX$memcached_raw_key;';
$nginx = str_replace ( 'HASHEDORNOT' , $mckeys , $nginx );
@@ -1089,9 +1106,9 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
$loggedincookies = join('|', $this->backend->cookies );
/* this part is not used when the cache is turned on for logged in users */
$loggedin = '
- if ($http_cookie ~* "'. $loggedincookies .'" ) {
- set $memcached_request 0;
- }';
+ if ($http_cookie ~* "'. $loggedincookies .'" ) {
+ set $memcached_request 0;
+ }';
/* add logged in cache, if valid */
if ( ! $this->options['cache_loggedin'])
@@ -1104,9 +1121,9 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
$cookies = str_replace( ",","|", $this->options['nocache_cookies'] );
$cookies = str_replace( " ","", $cookies );
$cookie_exception = '# avoid cache for cookies specified
- if ($http_cookie ~* ' . $cookies . ' ) {
- set $memcached_request 0;
- }';
+ if ($http_cookie ~* ' . $cookies . ' ) {
+ set $memcached_request 0;
+ }';
$nginx = str_replace ( 'COOKIES_EXCEPTION' , $cookie_exception , $nginx );
} else {
$nginx = str_replace ( 'COOKIES_EXCEPTION' , '' , $nginx );
@@ -1121,7 +1138,7 @@ class WP_FFPC extends WP_FFPC_ABSTRACT {
$nginx = str_replace ( 'RESPONSE_HEADER' , '' , $nginx );
}
- return $nginx;
+ return htmlspecialchars($nginx);
}
/**
diff --git a/wp-ffpc-nginx-sample.conf b/wp-ffpc-nginx-sample.conf
index 000fc06..4761ec0 100644
--- a/wp-ffpc-nginx-sample.conf
+++ b/wp-ffpc-nginx-sample.conf
@@ -1,116 +1,107 @@
-http {
+# --- contents of {nginx config dir, usuall /etc/nginx}/fastcgi_params ---
+ fastcgi_param SCRIPT_NAME $script_name;
+ fastcgi_param PATH_INFO $path_info;
+ fastcgi_param QUERY_STRING $query_string;
+ fastcgi_param REQUEST_METHOD $request_method;
+ fastcgi_param CONTENT_TYPE $content_type;
+ fastcgi_param CONTENT_LENGTH $content_length;
+ fastcgi_param SCRIPT_NAME $script_name;
+ fastcgi_param REQUEST_URI $request_uri;
+ fastcgi_param DOCUMENT_URI $document_uri;
+ fastcgi_param DOCUMENT_ROOT $document_root;
+ fastcgi_param SERVER_PROTOCOL $server_protocol;
+ fastcgi_param GATEWAY_INTERFACE CGI/1.1;
+ fastcgi_param SERVER_SOFTWARE nginx;
+ fastcgi_param REMOTE_ADDR $remote_addr;
+ fastcgi_param REMOTE_PORT $remote_port;
+ fastcgi_param SERVER_ADDR $server_addr;
+ fastcgi_param SERVER_PORT $server_port;
+ fastcgi_param SERVER_NAME $server_name;
+ fastcgi_param HTTPS $https if_not_empty;
+ fastcgi_param SSL_PROTOCOL $ssl_protocol if_not_empty;
+ fastcgi_param SSL_CIPHER $ssl_cipher if_not_empty;
+ fastcgi_param SSL_SESSION_ID $ssl_session_id if_not_empty;
+ fastcgi_param SSL_CLIENT_VERIFY $ssl_client_verify if_not_empty;
+ fastcgi_param REDIRECT_STATUS 200;
+ fastcgi_index index.php;
+ fastcgi_connect_timeout 10;
+ fastcgi_send_timeout 360;
+ fastcgi_read_timeout 3600;
+ fastcgi_buffer_size 512k;
+ fastcgi_buffers 512 512k;
+ fastcgi_intercept_errors on;
- # memcached servers, generated according to wp-ffpc config
- upstream memcached-servers {
+
+
+# --- part needs to go inside the http { } block of nginx ---
+ # --- memcached ---
+ upstream memcached {
MEMCACHED_SERVERS
- }
+ }
- # PHP-FPM upstream; change it accordingly to your local config!
- upstream php-fpm {
- server 127.0.0.1:9000;
- }
+ # --- PHP-FPM upstream --- change it accordingly to your local config!
+ upstream php-fpm {
+ server 127.0.0.1:9000;
+ }
- server {
- ## Listen ports
- listen 80;
- listen [::]:80;
- # use _ if you want to accept everything, or replace _ with domain
- server_name _;
+# --- part needs to go inside the server { } block of nginx ---
+ set $memcached_raw_key KEYFORMAT;
- # root of WordPress
- root SERVERROOT;
+ HASHEDORNOT
- # set up logging
- access_log /var/log/nginx/SERVERLOG.access.log;
- error_log /var/log/nginx/SERVERLOG.error.log;
+ set $memcached_request 1;
- ## PHP5-FPM
- location ~ (\.php) {
- # these settings are usually in fastcgi_params
+ if ($request_method = POST ) {
+ set $memcached_request 0;
+ }
- fastcgi_index index.php;
- fastcgi_connect_timeout 10;
- fastcgi_send_timeout 180;
- fastcgi_read_timeout 180;
- fastcgi_buffer_size 512k;
- fastcgi_buffers 4 256k;
- fastcgi_busy_buffers_size 512k;
- fastcgi_temp_file_write_size 512k;
- fastcgi_intercept_errors on;
- fastcgi_split_path_info ^(.+\.php)(/.*)$;
- fastcgi_keep_conn on;
+ if ( $uri ~ "/wp-" ) {
+ set $memcached_request 0;
+ }
- fastcgi_param QUERY_STRING $query_string;
- fastcgi_param REQUEST_METHOD $request_method;
- fastcgi_param CONTENT_TYPE $content_type;
- fastcgi_param CONTENT_LENGTH $content_length;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- fastcgi_param REQUEST_URI $request_uri;
- fastcgi_param DOCUMENT_URI $document_uri;
- fastcgi_param DOCUMENT_ROOT $document_root;
- fastcgi_param SERVER_PROTOCOL $server_protocol;
- fastcgi_param GATEWAY_INTERFACE CGI/1.1;
- fastcgi_param SERVER_SOFTWARE nginx;
- fastcgi_param REMOTE_ADDR $remote_addr;
- fastcgi_param REMOTE_PORT $remote_port;
- fastcgi_param SERVER_ADDR $server_addr;
- fastcgi_param SERVER_PORT $server_port;
- fastcgi_param SERVER_NAME $server_name;
- fastcgi_param PATH_INFO $fastcgi_path_info;
- fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
- fastcgi_param REDIRECT_STATUS 200;
+ if ( $args ) {
+ set $memcached_request 0;
+ }
- # uncomment these for HTTPS usage
- #fastcgi_param HTTPS $https if_not_empty;
- #fastcgi_param SSL_PROTOCOL $ssl_protocol if_not_empty;
- #fastcgi_param SSL_CIPHER $ssl_cipher if_not_empty;
- #fastcgi_param SSL_SESSION_ID $ssl_session_id if_not_empty;
- #fastcgi_param SSL_CLIENT_VERIFY $ssl_client_verify if_not_empty;
+ LOGGEDIN_EXCEPTION
- default_type text/html;
+ COOKIES_EXCEPTION
- set $memcached_raw_key KEYFORMAT;
- HASHEDORNOT
+ location ~ ^(?.+?\.php)(?.*)$ {
+ default_type text/html;
- set $memcached_request 1;
+ if ( $memcached_request = 1) {
+ RESPONSE_HEADER
+ memcached_pass memcached;
+ error_page 404 = @fallback;
+ }
- if ($request_method = POST ) {
- set $memcached_request 0;
- }
+ fastcgi_split_path_info ^(?.+?\.php)(?.*)$;
+ fastcgi_param SCRIPT_FILENAME $document_root$script_name;
+ fastcgi_param PATH_TRANSLATED $document_root$path_info;
+ include params/fastcgi;
+ fastcgi_keep_conn on;
+ fastcgi_pass php-fpm;
+ }
- if ( $uri ~ "/wp-" ) {
- set $memcached_request 0;
- }
+ location / {
+ try_files $uri $uri/ @rewrites;
+ }
- if ( $args ) {
- set $memcached_request 0;
- }
+ location @fallback {
+ # add_header X-Cache-Engine "WP-FFPC nginx via memcached - fallback - not cached";
- LOGGEDIN_EXCEPTION
+ fastcgi_split_path_info ^(?.+?\.php)(?.*)$;
+ fastcgi_param SCRIPT_FILENAME $document_root$script_name;
+ fastcgi_param PATH_TRANSLATED $document_root$path_info;
+ include fastcgi_params;
+ fastcgi_keep_conn on;
+ fastcgi_pass php-fpm;
+ }
- COOKIES_EXCEPTION
+ location @rewrites {
+ rewrite ^ /index.php last;
+ }
- if ( $memcached_request = 1) {
- RESPONSE_HEADER
- memcached_pass memcached-servers;
- error_page 404 = @nocache;
- break;
- }
-
- fastcgi_pass unix:/var/run/php5-fpm.sock;
- }
-
- location @nocache {
- add_header X-Cache-Engine "not cached";
- fastcgi_pass unix:/var/run/php5-fpm.sock;
- }
-
- location / {
- try_files $uri $uri/ /index.php;
- }
-
- }
-}
diff --git a/wp-ffpc.php b/wp-ffpc.php
index 0adc0b6..567e63a 100644
--- a/wp-ffpc.php
+++ b/wp-ffpc.php
@@ -3,7 +3,7 @@
Plugin Name: WP-FFPC
Plugin URI: https://github.com/petermolnar/wp-ffpc
Description: WordPress in-memory full page cache plugin
-Version: 1.10.0
+Version: 1.10.1
Author: Peter Molnar
Author URI: http://petermolnar.eu/
License: GPLv3