Search code examples
nginxbrowser-detection

Nginx bowser dectection not working for IE10 + 11


Hi I am using nginx http browser module to checking browser version. Where I work now I have to do that on nginx rather then on the browser using JS. Anyways I need to allow only IE10 and 11 the rest of the IE's should be rewritten to a basic page. However my configuration below is blocking all IE's (all other browsers is behaving ok). Any idea why that is?

server {
listen 0.0.0.0:9000;
server_name localhost;
root /Users/charlie/Development/customerClient/dist/;
index index.html;

modern_browser gecko 27.0.0;
modern_browser msie 10.0;
modern_browser msie 11.0;
modern_browser safari 7.0;
# modern_browser opera     9.0;
# modern_browser konqueror 3.0;

modern_browser  unlisted;
# modern_browser konqueror 3.0;

    #
# Non-supported browsers
#
ancient_browser "MSIE 6.0";
ancient_browser msie 1.0;
ancient_browser msie 1.5;
ancient_browser msie 2.0;
ancient_browser msie 3.0;
ancient_browser msie 4.0;
ancient_browser msie 5.0;
ancient_browser msie 5.5;
ancient_browser msie 6.0;
ancient_browser msie 7.0;
ancient_browser msie 8.0;
ancient_browser msie 9.0;
# ancient_browser msie 10.0;
# ancient_browser msie 11.0;

ancient_browser safari 3;
ancient_browser safari 4;
ancient_browser safari 5;

ancient_browser gecko 1;
ancient_browser gecko 2;
ancient_browser gecko 3;
ancient_browser gecko 4;
ancient_browser gecko 5;
ancient_browser gecko 6;
ancient_browser gecko 7;
ancient_browser gecko 8;
ancient_browser gecko 9;
ancient_browser gecko 10;
ancient_browser gecko 11;
ancient_browser gecko 12;
ancient_browser gecko 13;
ancient_browser gecko 14;
ancient_browser gecko 15;
ancient_browser gecko 16;
ancient_browser gecko 17;
ancient_browser gecko 18;
ancient_browser gecko 19;
ancient_browser gecko 20;
ancient_browser gecko 21;
ancient_browser gecko 22;
ancient_browser gecko 23;
ancient_browser gecko 24;
ancient_browser gecko 25;
ancient_browser gecko 26;

ancient_browser opera 7;
ancient_browser opera 8;
ancient_browser opera 9;
ancient_browser opera 10;

ancient_browser konqueror 3;
ancient_browser konqueror 4;

ancient_browser Links Lynx Netscape4;

#this just allow basic.html to fetch assest without failing the checking again
location ~* \.(jpeg|jpg|png|ico|gif|js|css) {

}

location / {
    if ($ancient_browser){
      rewrite ^ /basic.html;
      break;
    }
}

}

Solution

  • A bit late a reply but you are misusing modern_browser.

    Define it once per layout engine with the version number of the oldest allowed.

    So if you want MSIE 10.0 and above, then you need one line only for MSIE:

    modern_browser msie 10.0;