Created
May 2, 2022 08:11
-
-
Save narate/96c29f3d8c9c0dc21b2a924325509890 to your computer and use it in GitHub Desktop.
The srcache-nginx-module example config for WordPress with php-fpm
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
server { | |
listen 80; | |
server_name _; | |
root /var/www/html; | |
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 redis: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 redis:6379; | |
} | |
rewrite /wp-admin$ $scheme://$host$uri/ permanent; | |
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-Fetch $srcache_fetch_status'; | |
more_set_headers 'X-Cache-Store $srcache_store_status'; | |
fastcgi_split_path_info ^(.+?\.php)(/.*)$; | |
if (!-f $document_root$fastcgi_script_name) { | |
return 404; | |
} | |
include fastcgi_params; | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |
fastcgi_param PATH_INFO $fastcgi_path_info; | |
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; | |
fastcgi_pass wp1:9000; | |
fastcgi_index index.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; } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment