Synopsis
Compression is a Technic to reduce object size to reduce delivery delay for objects over HTTP protocol.
Until now, HAProxy did not include such a feature. But the guys at HAProxy Technologies worked hard on it (mainly David Du Colombier and @wlallemand).
HAProxy can now be considered a new option to compress HTTP streams, as well as nginx, apache, or IIS which already does it.
Note that this is in early beta, so use it with care.
Compilation
Get the latest HAProxy git version, by running a “git pull” in your HAProxy git directory.
If you don’t already have such directory, then run the a:
git clone http://git.1wt.eu/git/haproxy.git
Once your HAProxy sources are updated, then you can compile HAProxy:
make TARGET=linux26 USE_ZLIB=yes
Configuration
This is a very simple configuration test:
listen ft_web
option http-server-close
mode http
bind 127.0.0.1:8090 name http
default_backend bk_web
backend bk_web
option http-server-close
mode http
compression algo gzip
compression type text/html text/plain text/css
server localhost 127.0.0.1:80
Compression Test
On my localost, I have an apache with compression disabled and a style.css object whose size are 16302 bytes.
Download Without Compression Requested
curl -o/dev/null -D - "http://127.0.0.1:8090/style.css"
HTTP/1.1 200 OK
Date: Fri, 26 Oct 2012 08:55:42 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Sun, 11 Mar 2012 17:01:39 GMT
ETag: "a35d6-3fae-4bafa944542c0"
Accept-Ranges: bytes
Content-Length: 16302
Content-Type: text/css
100 16302 100 16302 0 0 5722k 0 --:--:-- --:--:-- --:--:-- 7959k
Download With Compression Requested
curl -o/dev/null -D - "http://127.0.0.1:8090/style.css" -H "Accept-Encoding: gzip"
HTTP/1.1 200 OK
Date: Fri, 26 Oct 2012 08:56:28 GMT
Server: Apache/2.2.16 (Debian)
Last-Modified: Sun, 11 Mar 2012 17:01:39 GMT
ETag: "a35d6-3fae-4bafa944542c0"
Accept-Ranges: bytes
Content-Type: text/css
Transfer-Encoding: chunked
Content-Encoding: gzip
100 4036 0 4036 0 0 1169k 0 --:--:-- --:--:-- --:--:-- 1970k
In this example, the object size passed from 16302 bytes to 4036 bytes.
Have fun !!!!