nginx and wp supercache

nginx and wp supercache

bboranbboran Member
edited December 2011 in Help

Hello i am trying to configure nginx to work with WP Supercache. First of all i am using the latest stable version of WP Super Cache which is 0.9.9.9 and this is the .htaccess rules WP Super Cache gives me on its plugin page;

`# 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; }

Comments

  • 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

  • interesting, my friend was looking for this

    Webmaster of a great anime blog! animeonsen.com
Sign In or Register to comment.