-
-
Save perusio/1326701 to your computer and use it in GitHub Desktop.
### 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; | |
} |
Would you please give an usage example?
Yes, usage example would be really helpfull
I'm intrested in an usage example too!
Here's how I use it (to redirect mobile traffic to an m.domain.com site):
set $mobile_rewrite do_not_perform;
if ($is_mobile) {
set $mobile_rewrite perform;
}
if ($mobile_rewrite = perform) {
rewrite ^ http://m.domain.com$request_uri? redirect;
break;
}
Would be awesome though if there was a way to separate mobile from tablet from desktop.
Its a pretty old post but in case someone want to detect tablet and mobile separately here is my code
map $http_user_agent $ua_device {
default 'desktop';
~*(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge\ |maemo|midp|mmp|mobile.+firefox|netfront|opera\ m(ob|in)i|palm(\ os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows\ ce|xda|xiino/i 'mobile';
~*android|ipad|playbook|silk/i 'tablet';
}
add_header x-ua-device $ua_device;
How to block requests from rest clients , I tried this but still I'm not able to block Postman requests ?
map $http_user_agent $is_browser {
~*(MSIE|Firefox|Safari|Opera) 0;
~*spider|crawl|slurp|bot 1; # bots
default 1;
}
I think you've reversed the logic, default should be 0 and in case you detect a browser (MSIE, Firefox, etc.) you want 1.
Thanks!