Skip to content
This repository has been archived by the owner on Aug 12, 2023. It is now read-only.
Etopian Inc edited this page Dec 28, 2016 · 5 revisions

Eventually we want to add a cache using Redis to the Nginx Proxy server.

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 $skip_cache 0;

# POST requests and urls with a query string should always go to PHP
if ($request_method = POST) {
    set $skip_cache 1;
}   
if ($query_string != "") {
    set $skip_cache 1;
}   

# Don't cache uris containing the following segments
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
    set $skip_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 $skip_cache 1;
}

location / {
    try_files $uri $uri/ /index.php?$args;
}   

location /redis-fetch {
    internal  ;
    set  $redis_key $args;
    redis_pass  127.0.0.1:6379;
}

location /redis-store {
    internal  ;
    set_unescape_uri $key $arg_key ;
    redis2_query  set $key $echo_request_body;
    redis2_query expire $key 14400;
    redis2_pass  127.0.0.1:6379;
} 

location ~ \.php$ {
    
    set $key "nginx-cache:$scheme$request_method$host$request_uri";
    try_files $uri =404;

    srcache_fetch_skip $skip_cache;
    srcache_store_skip $skip_cache;

    srcache_response_cache_control off;

    set_escape_uri $escaped_key $key;

    srcache_fetch GET /redis-fetch $key;
    srcache_store PUT /redis-store key=$escaped_key;

    more_set_headers 'X-Cache $srcache_fetch_status';
    more_set_headers 'X-Cache-2 $srcache_store_status';

    include fastcgi_params;
    fastcgi_pass php;
} 

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 = /robots.txt { access_log off; log_not_found off; }
location ~ /\. { deny  all; access_log off; log_not_found off; }

}

Clone this wiki locally