2 things got me great improvement (<100ms TTFB):
Enable http2 in all of my SSL server blocks (needs nginx 1.9.5+)
server {
listen 443 ssl http2;
#rest of your config here
}Set up fastcgi_cache
In /etc/nginx/nginx.conf:
fastcgi_cache_path /etc/nginx-cache levels=1:2 keys_zone=phpcache:100m inactive=60m;
fastcgi_cache_key "$scheme$request_method$host$request_uri";In your server's .conf file likely in /etc/nginx/conf.d/modify the php handling block
location ~ [^/]\.php(/|$) {
fastcgi_cache phpcache; # The name of the cache key-zone to use
fastcgi_cache_valid 200 30m; # What to cache: 'Code 200' responses, for half an hour
fastcgi_cache_methods GET HEAD; # What to cache: only GET and HEAD requests (not POST)
add_header X-Fastcgi-Cache $upstream_cache_status; # Add header so we can see if the cache hits or misses
# the rest of your existing stuff to handle PHP files here
}restart nginx sudo nginx -s reload
This reduced my TTFB to under 100ms consistently, and everything seems to be pretty happy :)
Would it be safe to implement this?