93 lines
4.6 KiB
Text
93 lines
4.6 KiB
Text
# configuration directives to support WP Fastest Cache plugin.
|
|
# note not all features are supported.
|
|
|
|
# default location block
|
|
# - directs mobile visitors to @mobileaccess, if configured.
|
|
# - directs cache misses to PHP (via @cachemiss).
|
|
# - directs requests "that shouldn't be cached" to PHP (via @cachemiss): example - requests from a logged-in user.
|
|
|
|
location / {
|
|
error_page 418 = @cachemiss; # to handle cache misses
|
|
error_page 419 = @mobileaccess; # to handle mobile visits
|
|
recursive_error_pages on;
|
|
|
|
set $pathDomain "/wp-content/cache/${host}/all${uri}"; # path domain for multisite
|
|
set $path "/wp-content/cache/all${uri}";
|
|
|
|
# bypass POST requests
|
|
if ($request_method = POST) { return 418; }
|
|
|
|
# uncommenting the following degrades the performance on certain sites. YMMV
|
|
# if ($query_string != "") { return 418; }
|
|
|
|
# bypass cache for common query strings
|
|
if ($arg_s != "") { return 418; } # search query
|
|
if ($arg_p != "") { return 418; } # request a post / page by ID
|
|
if ($args ~ "amp") { return 418; } # amp test
|
|
if ($arg_preview = "true") { return 418; } # preview post / page
|
|
if ($arg_ao_noptimize != "") { return 418; } # support for Autoptimize plugin
|
|
|
|
# if WP related cookies are found, skip cache
|
|
if ($http_cookie ~* "wordpress_logged_in_") { return 418; }
|
|
if ($http_cookie ~* "comment_author_") { return 418; }
|
|
if ($http_cookie ~* "wp_postpass_") { return 418; }
|
|
|
|
# avoid duplicate content on Amazon CloudFront and KeyCDN.
|
|
if ( $http_user_agent = "Amazon CloudFront" ) { return 403; access_log off; }
|
|
if ($http_x_pull = "KeyCDN") { return 403; access_log off; }
|
|
|
|
# uncomment the following, if WP Fastest Cache plugin is set to create a separate cache for mobile visitors
|
|
# if ( $http_user_agent ~* "2.0\ MMP|240x320|400X240|AvantGo|BlackBerry|Blazer|Cellphone|Danger|DoCoMo|Elaine/3.0|EudoraWeb|Googlebot-Mobile|hiptop|IEMobile|KYOCERA/WX310K|LG/U990|MIDP-2.|MMEF20|MOT-V|NetFront|Newt|Nintendo\ Wii|Nitro|Nokia|Opera\ Mini|Palm|PlayStation\ Portable|portalmmm|Proxinet|ProxiNet|SHARP-TQ-GX10|SHG-i900|Small|SonyEricsson|Symbian\ OS|SymbianOS|TS21i-10|UP.Browser|UP.Link|webOS|Windows\ CE|WinWAP|YahooSeeker/M1A1-R2D2|iPhone|iPod|Android|BlackBerry9530|LG-TU915\ Obigo|LGE\ VX|webOS|Nokia5800|iPad" ) { return 419; }
|
|
# add_header "Vary" "User-Agent";
|
|
|
|
# uncomment the following if deemed fit, in addition to the above line to enable @mobileaccess
|
|
# if ( $http_user_agent ~* "w3c\ |w3c-|acs-|alav|alca|amoi|audi|avan|benq|bird|blac|blaz|brew|cell|cldc|cmd-|dang|doco|eric|hipt|htc_|inno|ipaq|ipod|jigs|kddi|keji|leno|lg-c|lg-d|lg-g|lge-|lg/u|maui|maxo|midp|mits|mmef|mobi|mot-|moto|mwbp|nec-|newt|noki|palm|pana|pant|phil|play|port|prox|qwap|sage|sams|sany|sch-|sec-|send|seri|sgh-|shar|sie-|siem|smal|smar|sony|sph-|symb|t-mo|teli|tim-|tosh|tsm-|upg1|upsi|vk-v|voda|wap-|wapa|wapi|wapp|wapr|webc|winw|winw|xda\ |xda-|ipad" ) { return 419; }
|
|
|
|
# look for cached version; if-not-found, then send the request to PHP
|
|
try_files "${path}index.html" "${path}/index.html" "${pathDomain}index.html" "${pathDomain}/index.html" $uri $uri/ /index.php$is_args$args;
|
|
|
|
#--> all the following would apply, only if the request hits the cache
|
|
|
|
# add some useful headers
|
|
add_header "X-Cache" "HIT - WP Fastest Cache";
|
|
add_header "X-CF-Powered-By" "WP Fastest Cache";
|
|
add_header "Vary" "Cookie";
|
|
# include "globals/hsts.conf";
|
|
include 'globals/security-headers.conf';
|
|
|
|
expires 30m;
|
|
# expires modified 30m;
|
|
add_header "Cache-Control" "must-revalidate";
|
|
|
|
# For proxies
|
|
# add_header "Cache-Control" "s-maxage=600";
|
|
}
|
|
|
|
# location to handle requests come from mobile devices
|
|
location @mobileaccess {
|
|
set $pathDomain "/wp-content/cache/${host}/wpfc-mobile-cache${uri}"; # path domain for multisite
|
|
set $path "/wp-content/cache/wpfc-mobile-cache${uri}";
|
|
|
|
# look for cached version for mobiles; if-not-found, then send the request to PHP
|
|
try_files "${path}index.html" "${path}/index.html" "${pathDomain}index.html" "${pathDomain}/index.html" $uri $uri/ /index.php$is_args$args;
|
|
|
|
#--> all the following would apply, only if the request hits the cache
|
|
|
|
# add some useful headers
|
|
add_header "X-Cache" "HIT - Mobile - WP Fastest Cache";
|
|
add_header "Vary" "User-Agent, Cookie";
|
|
# include "globals/hsts.conf";
|
|
include 'globals/security-headers.conf';
|
|
|
|
expires 30m;
|
|
# expires modified 30m;
|
|
add_header "Cache-Control" "must-revalidate";
|
|
|
|
# For proxies
|
|
# add_header "Cache-Control" "s-maxage=600";
|
|
}
|
|
|
|
location @cachemiss {
|
|
# on cache miss, send the request to PHP
|
|
try_files $uri $uri/ /index.php$is_args$args;
|
|
}
|