\r\n

51Degrees Device Detection Varnish  4.3Newer Version 4.4

A device detection module for Varnish

hash/matchAll.vcl

This example shows how to use match_all() api which will use all available headeres in the request to find the corresponding mobile device. This example is available in full on GitHub.

This example requires a local data file. The free 'Lite' data file can be acquired by pulling the git submodules under this repository (run `git submodule update --recursive`) or from the device-detection-data GitHub repository.

The Lite data file is only used for illustration, and has limited accuracy and capabilities. Find out about the more capable data files that are available on our pricing page

The path to the data need to be updated before running the example.

In a Linux environment, the following commands:

$ curl localhost:8080 -I -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"
$ curl localhost:8080 -I -A "Mozilla/5.0 (iPhone; CPU iPhone OS 11_2 like Mac OS X) AppleWebKit/604.4.7 (KHTML, like Gecko) Mobile/15C114"

Expected output:

HTTP/1.1 200 OK
...
X-IsMobile: False
...
...
HTTP/1.1 200 OK
...
X-IsMobile: True
vcl 4.0;
import fiftyonedegrees;
backend default {
.host = "127.0.0.1";
.port = "80";
}
sub vcl_recv {
set req.http.X-IsMobile = fiftyonedegrees.match_all("IsMobile");
}
sub vcl_deliver {
set resp.http.X-IsMobile = fiftyonedegrees.match_all("IsMobile");
}
sub vcl_init {
fiftyonedegrees.start("/etc/varnish/51Degrees-LiteV4.1.hash");
}