DeviceAtlas Device Detection ---------------------------- In order to add DeviceAtlas Device Detection support, you would need to download the API source code from https://deviceatlas.com/deviceatlas-haproxy-module and once extracted : $ make TARGET= USE_PCRE=1 USE_DEVICEATLAS=1 DEVICEATLAS_SRC= Optionally DEVICEATLAS_INC and DEVICEATLAS_LIB may be set to override the path to the include files and libraries respectively if they're not in the source directory. These are supported DeviceAtlas directives (see doc/configuration.txt) : - deviceatlas-json-file . - deviceatlas-log-level (0 to 3, level of information returned by the API, 0 by default). - deviceatlas-property-separator (character used to separate the properties produced by the API, | by default). Sample configuration : global deviceatlas-json-file ... frontend bind *:8881 default_backend servers There are two distinct methods available, one which leverages all HTTP headers and one which uses only a single HTTP header for the detection. The former method is highly recommended and more accurate. There are several possible use cases. # To transmit the DeviceAtlas data downstream to the target application All HTTP headers via the sample / fetch http-request set-header X-DeviceAtlas-Data %[da-csv-fetch(primaryHardwareType,osName,osVersion,browserName,browserVersion,browserRenderingEngine)] Single HTTP header (e.g. User-Agent) via the convertor http-request set-header X-DeviceAtlas-Data %[req.fhdr(User-Agent),da-csv-conv(primaryHardwareType,osName,osVersion,browserName,browserVersion,browserRenderingEngine)] # Mobile content switching with ACL All HTTP headers acl is_mobile da-csv-fetch(mobileDevice) 1 Single HTTP header acl device_type_tablet req.fhdr(User-Agent),da-csv-conv(primaryHardwareType) "Tablet" Please find more information about DeviceAtlas and the detection methods at https://deviceatlas.com/resources .