Created
February 19, 2016 15:43
-
-
Save muresan/6175eda68160871208c2 to your computer and use it in GitHub Desktop.
nginx microcache
This file contains 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
http { | |
fastcgi_cache_path /var/cache/nginx2 levels=1:2 keys_zone=microcache:5m max_size=1000m; | |
log_format cache '$remote_addr - $remote_user [$time_local] "$request" ' '$status $upstream_cache_status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; | |
} |
This file contains 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
# | |
# your website | |
# | |
server { | |
listen 80; | |
server_name <your hostnames>; | |
access_log <your access log> main; | |
error_log <your error log>; | |
root <your root folder>; | |
location / { | |
index index.php index.html index.htm; | |
} | |
if (!-e $request_filename) { | |
rewrite ^(.+)$ /index.php?q=$1 last; | |
} | |
location ~ \.php$ { | |
# Setup var defaults | |
set $no_cache ""; | |
# If non GET/HEAD, don't cache & mark user as uncacheable for 1 second via cookie | |
if ($request_method !~ ^(GET|HEAD)$) { | |
set $no_cache "1"; | |
} | |
# Drop no cache cookie if need be | |
# (for some reason, add_header fails if included in prior if-block) | |
if ($no_cache = "1") { | |
add_header Set-Cookie "_mcnc=1; Max-Age=2; Path=/"; | |
add_header X-Microcachable "0"; | |
} | |
# Bypass cache if no-cache cookie is set | |
if ($http_cookie ~* "_mcnc") { | |
set $no_cache "1"; | |
} | |
# Bypass cache if flag is set | |
fastcgi_no_cache $no_cache; | |
fastcgi_cache_bypass $no_cache; | |
fastcgi_cache microcache; | |
fastcgi_cache_key $server_name|$request_uri; | |
fastcgi_cache_valid 404 30m; | |
fastcgi_cache_valid 200 10s; | |
fastcgi_max_temp_file_size 1M; | |
fastcgi_cache_use_stale updating; | |
fastcgi_pass localhost:9000; | |
fastcgi_pass_header Set-Cookie; | |
fastcgi_pass_header Cookie; | |
fastcgi_ignore_headers Cache-Control Expires Set-Cookie; | |
fastcgi_index index.php; | |
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; | |
fastcgi_split_path_info ^(.+\.php)(/.+)$; | |
fastcgi_param PATH_INFO $fastcgi_path_info; | |
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; | |
#fastcgi_intercept_errors on; | |
include fastcgi_params; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment