# WPSUBDIR W3 TOTAL CACHE NGINX CONFIGURATION server { # Uncomment The Following Line For Domain Mapping # listen 80 default_server; server_name example.com *.example.com; # Uncomment The Following Line For Domain Mapping #server_name_in_redirect off; access_log /var/log/nginx/example.com.access.log rt_cache; error_log /var/log/nginx/example.com.error.log; root /var/www/example.com/htdocs; index index.php index.htm index.html; set $cache_uri $request_uri; # POST Requests And Urls With A Query String Should Always Go To PHP if ($request_method = POST) { set $cache_uri 'null cache'; } if ($query_string != "") { set $cache_uri 'null cache'; } # Don't Cache Uris Containing The Following Segments if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|wp-.*.php|index.php|/feed/|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { set $cache_uri 'null cache'; } # Don't Use The Cache For Logged In Users Or Recent Commenters if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") { set $cache_uri 'null cache'; } if (!-e $request_filename) { # Redirect wp-admin To wp-admin/ rewrite /wp-admin$ $scheme://$host$uri/ permanent; # Redirect wp-* Files/Folders rewrite ^(/[^/]+)?(/wp-.*) $2 last; # Redirect Other PHP Files rewrite ^(/[^/]+)?(/.*\.php) $2 last; } # Use Cached Or Actual File If They Exists, Otherwise Pass Request To WordPress location / { try_files /wp-content/cache/page_enhanced/${host}${cache_uri}_index.html $uri $uri/ /index.php?$args; } location ~ ^/wp-content/cache/minify/(.+\.(css|js))$ { try_files $uri /wp-content/plugins/w3-total-cache/pub/minify.php?file=$1; } location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass php; } include common/wpcommon.conf; include common/locations.conf; }