Como redirecionar navegadores desatualizados com o mapa NGinx?

5

Temos um proxy de balanceamento NginX na frente de nosso aplicativo da web. Infelizmente, não há recursos de desenvolvimento suficientes para suportar navegadores desatualizados, ainda assim: Queremos redirecionar os membros do nosso projeto da web para a página / desatualizada pelos dados do agente do usuário do navegador, como este ( link ). Por algum motivo, não queremos carregar o back-end com a lógica de análise de conteúdo do User-Agent. Ouvi dizer que é fácil fazer com o link do NginX Se alguém fez isso, você pode me ajudar com exemplos e explicações, por favor!

    
por Alexander Arutinyants 24.07.2014 / 13:19

2 respostas

10

A próxima solução funciona muito bem e é exatamente o que eu queria:

map $http_user_agent $outdated {
    default                                 0;
    "~MSIE [1-9]\."                         1;
    "~Mozilla.*Firefox/[1-9]\."             1;
    "~Mozilla.*Firefox/[0-2][0-9]\."        1;
    "~Mozilla.*Firefox/3[0-1]\."            1;
    "~Opera.*Version/[0-9]\."               1;
    "~Opera.*Version/[0-1][0-9]\."          1;
    "~Opera.*Version/2[0-1]\."              1;
    "~AppleWebKit.*Version/[0-6]\..*Safari" 1;
    "~Chrome/[0-9]\."                       1;
    "~Chrome/[0-2][0-9]\."                  1;
    "~Chrome/3[0-3]\."                      1;
}

if ($outdated = 1){
    rewrite ^ /outdated redirect;
}

Obrigado a todos pela ajuda / respostas.

    
por 01.08.2014 / 16:49
4

Um teste simples é suficiente:

location / {
  if ($http_user_agent ~ "MSIE 6.0" ) {
    set $browser-version outdated;
  }

  if ($http_user_agent ~ "MSIE 7.0" ) {
    set $browser-version outdated;
  }

 if ($http_user_agent ~* "(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|phone)|xda|xiino") {
    set $browser-version mobile;
  }

  if ( $uri ~ ^/(images|favicon\.ico) ) {
    set $browser-version independent;
  }

  if ($browser-version = outdated) {
    rewrite  ^  /outdated/index.html break;
  }

  if ($browser-version = mobile) {
    rewrite  ^  /mobile/index.html break;
  }
}
    
por 24.07.2014 / 13:54

Tags