diff --git a/conf/nginx/singlesite/fastcgi-cache.conf b/conf/nginx/singlesite/fastcgi-cache.conf new file mode 100644 index 00000000..3258658d --- /dev/null +++ b/conf/nginx/singlesite/fastcgi-cache.conf @@ -0,0 +1,62 @@ +#move next 3 lines to /etc/nginx/nginx.conf if you want to use fastcgi_cache across many sites +fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:500m inactive=60m; +fastcgi_cache_key "$scheme$request_method$host$request_uri"; +fastcgi_cache_use_stale error timeout invalid_header http_500; + +server { + server_name example.com www.example.com; + + access_log /var/log/nginx/example.com.access.log; + error_log /var/log/nginx/example.com.error.log; + + root /var/www/example.com/htdocs; + index index.php; + + set $no_cache 0; + + # POST requests and urls with a query string should always go to PHP + if ($request_method = POST) { + set $no_cache 1; + } + if ($query_string != "") { + set $no_cache 1; + } + + # Don't cache uris containing the following segments + if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") { + set $no_cache 1; + } + + # Don't use the cache for logged in users or recent commenters + if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { + set $no_cache 1; + } + + location / { + try_files $uri $uri/ /index.php?$args; + } + + location ~ .php$ { + try_files $uri /index.php; + include fastcgi_params; + fastcgi_pass unix:/var/run/php5-fpm.sock; + + fastcgi_cache_bypass $no_cache; + fastcgi_no_cache $no_cache; + + fastcgi_cache WORDPRESS; + fastcgi_cache_valid 60m; + } + + location ~ /purge(/.*) { + fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; + } + + location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { + access_log off; log_not_found off; expires max; + } + + location = /favicon.php { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + location ~ /\. { deny all; access_log off; log_not_found off; } +}