views:

12

answers:

1

I have nginx installed with gzip_static activated. It works fine for CSS and JavaScript files, but it also looks for gzipped versions of image files like .png and .gif, although these are not in the list of files to be compressed:

# strace -p 25044 2>&1 | grep gz
open("/var/www/css/ymax.css.gz", O_RDONLY|O_NONBLOCK) = 438
open("/var/www/images/tools.png.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/images/ads/bs.gif.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/images/gfxborder/border_right.gif.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
open("/var/www/images/ads/hocuto03.gif.gz", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)

Here's my nginx configuration:

gzip  on;
gzip_disable     "msie6";
gzip_min_length 1000;
gzip_types text/plain text/css application/x-javascript text/javascript;
gzip_static on;

Is there a way to prevent this?

+1  A: 

I found a solution. In fact, two possible solutions:

  1. keep javascript and CSS files in a separate directory and create "location" rule to use gzip_static only for that directory

  2. if this is not possible (hosting multiple websites, not everything under your control, too many directories and files) there is an easier solution to prevent multiple open() calls by using open_file_cache_errors setting which caches (i.e remembers) that .gz file was not present and does not try to open it again.

Milan Babuškov