Select Page

Speed up your apache server with mod_deflate

Speed up your apache server with mod_deflate

Since I am facing performance problem due to the load of visitors and a badly configured server, I decide today to document my findings in this new series of articles.

The mod_deflate module provides the DEFLATE output filter that allows output from your server to be compressed before being sent to the client over the network.

Server: Strato (www.strato.de)
Operating system: SuSE / openSuSE
Requirements: root access and basic Unix knowledge

Why installing mod_deflate? is PHP gzip not enough?
PHP Gzip only compress PHP output, not unical file, like CSS, Javascipt, fixed HTML, other ressources.

1Use yast2 to install mod_deflate on the system, this will create files (*.so) in   /usr/lib/apache2-worker/ and  /usr/lib/apache2-prefork/
2Edit the file  
# vi /etc/sysconfig/apache2

and add deflate and headers (optional A)
APACHE_MODULES="deflate headers access actions alias auth auth_dbm autoindex cgi dir env expires include log_config mime negotiation setenvif ssl   userdir php4 php5 perl     rewrite suexec"
3create a new file in /etc/apache2/conf.d/mod_deflate.conf

#vi /etc/apache2/conf.d/mod_deflate.conf

and add these lines, at the end of file, adapt all path according to your system.

<IfModule mod_deflate.c>
  # place filter ‘DEFLATE’ on all outgoing content
  #SetOutputFilter DEFLATE
  AddOutputFilterByType DEFLATE text/html text/plain text/xml

  # exclude uncompressible content via file type
  SetEnvIfNoCase Request_URI \.(?:gif|jpeg|jpg|png|rar|zip)$ no-gzip dont-vary
  SetEnvIfNoCase Request_URI \.(?:mpg|avi|mpeg|wmv|mp3|wma|ogg)$ no-gzip dont-vary
  <IfModule mod_headers.c>
    #
A properly handle requests coming from behind proxies
    Header append Vary User-Agent
  </IfModule>

  # deflate.log, log compression ratio on each request
  DeflateFilterNote Input instream
  DeflateFilterNote Output outstream
  DeflateFilterNote Ratio ratio
  LogFormat ‘"%r" %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
  CustomLog /var/log/apache2/deflate.log deflate

  # Properly handle old browsers that do not support compression
  BrowserMatch ^Mozilla/4 gzip-only-text/html
  BrowserMatch ^Mozilla/4\.0[678] no-gzip
  BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
</IfModule>
 

4start
# apache2-reconfigure-mpm
this recreate the file  /etc/apache2/sysconfig.d/loadmodule.conf
and restart apache automatically.
verification: View HTTP Request and Response Header with http://web-sniffer.net/

search for Content-Encoding: gzip

References:

About The Author

I worked with various Insurances companies across Switzerland on online applications handling billion premium volumes. I love to continuously spark my creativity in many different and challenging open-source projects fueled by my great passion for innovation and blockchain technology.In my technical role as a senior software engineer and Blockchain consultant, I help to define and implement innovative solutions in the scope of both blockchain and traditional products, solutions, and services. I can support the full spectrum of software development activities, starting from analyzing ideas and business cases and up to the production deployment of the solutions.I'm the Founder and CEO of Disruptr GmbH.

Categories