public
Last active

Mobile device detection in Nginx with just 7 lines of configuration

  • Download Gist
gistfile1.txt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
### Testing if the client is a mobile or a desktop.
### The selection is based on the usual UA strings for desktop browsers.
 
## Testing a user agent using a method that reverts the logic of the
## UA detection. Inspired by notnotmobile.appspot.com.
map $http_user_agent $is_desktop {
default 0;
~*linux.*android|windows\s+(?:ce|phone) 0; # exceptions to the rule
~*spider|crawl|slurp|bot 1; # bots
~*windows|linux|os\s+x\s*[\d\._]+|solaris|bsd 1; # OSes
}
 
## Revert the logic.
map $is_desktop $is_mobile {
1 0;
0 1;
}

I've updated the directive to support IE9 on Windows Phone.

Added the bot detection.

The following is a reference to an open (but not open source) solution provided by my company to detect mobile devices (or any kind of HTTP client in fact) through NGINX.

http://www.scientiamobile.com/blog/post/view/id/25/title/HTTP-and-Mobile%3A-The-Missing-Header-

I figured that companies looking for a professionally supported solution in this space may want to know about it.

Thanks

Luca

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.