Nginx config for wp supercache
# BEGIN WPSuperCache
<ifmodule mod_rewrite.c="">RewriteEngine On
RewriteBase /
AddDefaultCharset UTF-8
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz -f
RewriteRule ^(.*) "/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz" [L]
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteCond %{HTTP:Cookie} !^.*(comment_author_|wordpress_logged_in|wp-postpass_).*$
RewriteCond %{HTTP:X-Wap-Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{HTTP:Profile} !^[a-z0-9\"]+ [NC]
RewriteCond %{DOCUMENT_ROOT}/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html -f
RewriteRule ^(.*) "/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html" [L]</ifmodule>
# END WPSuperCache
So according to that; i am now going to post 2 wp super cache configs. If you help me to decide which one i should use i will be very glad. Also you can help me to improve my codes for best use. First of all i am going to post my nginx.conf. Here it is;
user www-data www-data;
worker_processes 4;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
# General Settings
gzip on;
sendfile on;
tcp_nopush on;
tcp_nodelay off;
server_tokens off;
include mime.types;
keepalive_timeout 65;
default_type application/octet-stream;
# If we set index here, we won't have to anywhere else
index index.php index.html index.htm;
upstream php {
server unix:/tmp/php5-fpm.sock;
}
fastcgi_intercept_errors off;
include sites-enabled/*;
}
Here is my restrictions.conf;
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
location ~ /\. { access_log off; log_not_found off; deny all; }
location ~ ~$ { access_log off; log_not_found off; deny all; }
And now i am going to post my two different domain.com configuration setups. They also include supercache related configs. Here is number 1;
server {
listen 80;
server_name www.domain.com domain.com;
root /srv/www/domain.com/public_html;
access_log off;
error_log /srv/www/domain.com/logs/error.log;
if ($http_host != "domain.com") {
rewrite ^ http://domain.com$request_uri permanent;
}
location / {
gzip_static on;
gzip_disable "MSIE [1-6]\.";
gzip_buffers 16 8k;
gzip_comp_level 3;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/png image/gif image/jpeg;
gzip_proxied any;
if (-f $request_filename) { break; }
set $supercache_file '';
set $supercache_uri $request_uri;
if ($request_method = POST) { set $supercache_uri ''; }
if ($query_string) { set $supercache_uri ''; }
if ($http_cookie ~* "comment_author_|wordpress_logged_in|wp-postpass_" ) {
set $supercache_uri '';
}
if ($supercache_uri ~ ^(.+)$) {
set $supercache_file /wp-content/cache/supercache/${http_host}${uri}index.html;
}
if (-f $document_root$supercache_file) { rewrite ^ $supercache_file break; }
if (!-e $request_filename) { rewrite ^ /index.php last; }
}
fastcgi_intercept_errors off;
location ~* \.(?:ico|css|js|gif|jpeg|jpg|png)$ {
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
}
include restrictions.conf;
}
And here is my domain.com number 2 setup;
server {
listen 80;
server_name www.domain.com domain.com;
root /srv/www/domain.com/public_html;
access_log off;
error_log /srv/www/domain.com/logs/error.log;
if ($http_host != "domain.com") {
rewrite ^ http://domain.com$request_uri permanent;
}
location / {
gzip_static on;
gzip_disable "MSIE [1-6]\.";
gzip_buffers 16 8k;
gzip_comp_level 3;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript image/png image/gif image/jpeg;
gzip_proxied any;
if ($request_uri ~ ^.*//.*$) {
return 405;
}
if ($request_method ~ POST) {
return 405;
}
if ($query_string ~ ^.*=.*$) {
return 405;
}
if ($query_string ~ ^.*attachment_id=.*$) {
return 405;
}
if ($http_cookie ~ (?:comment_author_|wordpress_logged_in|wp-postpass_)) {
return 405;
}
if ($http_x_wap_profile ~ ^[a-z0-9\"]+) {
return 405;
}
if ($http_profile ~ ^[a-z0-9\"]+) {
return 405;
}
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).*) {
return 405;
}
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-).*) {
return 405;
}
error_page 405 = @nocache;
try_files /wp-content/cache/supercache/${http_host}${uri}index.html $uri $uri/ /index.php?q=$uri&$args;
}
fastcgi_intercept_errors off;
location ~* \.(?:ico|css|js|gif|jpeg|jpg|png)$ {
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# Add trailing slash to */wp-admin requests.
rewrite /wp-admin$ $scheme://$host$uri/ permanent;
# Pass all .php files onto a php-fpm/php-fcgi server.
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass php;
}
include restrictions.conf;
}
So what do you think? Are there any errors? Which one do you suggest me to use? Also is this correct;
try_files /wp-content/cache/supercache/${http_host}${uri}index.html $uri $uri/ /index.php?q=$uri&$args;
according to this;
RewriteRule ^(.*) "/wp-content/cache/supercache/%{HTTP_HOST}/$1/index.html.gz" [L]
And one last question; as you see wp supercache creates htaccess rules like index.html.gz not index.html so according to this should i change
/wp-content/cache/supercache/${http_host}${uri}index.html
to
/wp-content/cache/supercache/${http_host}${uri}index.html.gz
Thank you in advance.
Notes:
1-I have static gzip module compiled in with nginx.
2-There are one index.html and one index.html.gz files in my created cache folders.
3-I set cgi.fix_pathinfo to 0 in the php.ini