How can I check that the nginx gzip_static module is working?
Use strace. First, you need to detect PID of nginx process:
# ps ax | grep nginx
25043 ? Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
25044 ? S 0:02 nginx: worker process
Ok, so 25044 is the worker process. Now, we trace it:
# strace -p 25044 2>&1 | grep gz
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 438
open("/var/www/css/patches/patch_my_layout.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/yaml/core/iehacks.css.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/js/koznazna5.js.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 216
As you can see, it is trying to find .gz versions of files.
Change the content of the non-gzipped file. And then touch
both files (simultaneously—that is: in the same instantiation of touch
). If when you load the file in an browser (cache-wiped) you get the non-changed file, then nginx served the static-cached-gzipped file.
An easy way to avoid “did I just fetch the cache?” worries is to fetch from the command-line with curl
since curl doesn’t cache.
I would disable automatic compression and log gzip_ratio
:
http {
gzip off;
gzip_static on;
log_format log_with_ratio "... $gzip_ratio ...";
server {
access_log /var/log/nginx/file.log log_with_ratio;
}
}
Note, that you may override gzip
, gzip_static
and access_log
per server and location levels.