Enable GZIP Compression on nginx Servers
Speed kills, and there's nothing like a speedy website. When you come to this blog, I want you to have a great experience, which is why I've worked tirelessly to compress every asset and avoid unnecessary synchronous interactions. In reviewing my site with Google Pagespeed Insights, I noticed that my virtual private server from Media Temple wasn't configured to serve assets gzip compressed. Oh no! Here's how I enabled gzip compression and made my site miles faster!
Create a file at /etc/nginx/conf.d/gzip.conf
with the following content:
gzip on;
gzip_proxied any;
gzip_types text/plain text/xml text/css application/x-javascript;
gzip_vary on;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
With that file now in place, restart your server and you will now be serving site assets with gzip compression. Google takes site speed into account when ranking and placing your sites in their search engine so do your users a favor and strive for the fastest site possible -- especially for mobile users!
![Create Namespaced Classes with MooTools]()
MooTools has always gotten a bit of grief for not inherently using and standardizing namespaced-based JavaScript classes like the Dojo Toolkit does. Many developers create their classes as globals which is generally frowned up. I mostly disagree with that stance, but each to their own. In any event...
![5 More HTML5 APIs You Didn’t Know Existed]()
The HTML5 revolution has provided us some awesome JavaScript and HTML APIs. Some are APIs we knew we've needed for years, others are cutting edge mobile and desktop helpers. Regardless of API strength or purpose, anything to help us better do our job is a...
![Introducing MooTools Dotter]()
It's best practice to provide an indicator of some sort when performing an AJAX request or processing that takes place in the background. Since the dawn of AJAX, we've been using colorful spinners and imagery as indicators. While I enjoy those images, I am...
![CSS Vertical Centering]()
Front-end developing is beautiful, and it's getting prettier by the day. Nowadays we got so many concepts, methodologies, good practices and whatnot to make our work stand out from the rest. Javascript (along with its countless third party libraries) and CSS have grown so big, helping...
You can use
gzip_comp_level 1
Sets a gzip compression level of a response. Acceptable values are in the range from 1 to 9.
Nice article, I also like to use
gzip_min_length
parameter which reduces some overhead to gzip small responses.To test if gzip is enabled, run:
You should see
content-encoding: gzip
For production systems, I would suggest the use of
gzip_static
.If you want to quickly test whether GZIP is enabled on your website or not use this tool: http://www.giftofspeed.com/gzip-test/
Saved me a lot of time. It also shows you the compression percentages and stuff (for some of my pages it was 70% or more! :-))
so gzip is only work on text type content?
I prefer this line as this enables for javascript too
This snippet made it so when I restarted nginx it failed. Not sure what the deal is. Just an FYI for anyone planning to follow those directions exactly.
nginx fails to restart because sometimes you’ll have gzip already enabled.
So removing the line “gzip on;” or commenting it with a # should do the job!
If you are using Ubuntu 10.04 just execute this command “sudo nginx”, and it shows you where is the problem if exist, my Nginx fails because this line “gzip on;”.
It seems Gzip already ON but no configuration was set.
Hey Brent,
That depends on where you put the code and how you did it.
Can you share your error So I can help.
I put the code into my website config file at
/etc/nginx/sites-enabled/foobar.com/
and it works 100%Consider the addition of application/javascript. More in http://stackoverflow.com/questions/23939722/nginx-gzip-not-compressing-javascript-files
Thanks.. I thought it was because of my outdated nginx version. I updated it to latest version but still getting the same that all
.js
files were not gzip-compressed. Hence I added"application/x-javascript application/javascript text/javascript"
all together. Thanks