nginx - как сопоставить один URL-адрес с несколькими блоками местоположения - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть конфигурация nginx для обратного порта прокси-80 -> порт 3000.

server {
    listen 80;

    // ...

    location ~ {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:3000";
    }
}

Я пытаюсь отправить другой URL (например, /NotSupport), если URL совпадает с regex, а пользовательский агент ниже IE9.

, поэтому я изменил свою конфигурацию на ..

server {
    listen 80;

    // ...

    location ~* ^/(.+)/guide$ {
      if ($http_user_agent ~* '(MSIE 9.0|MSIE 8.0|MSIE 7.0|MSIE 6.0)') {
         return 301 /NotSupported;
      }
    }

    location ~ {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:3000";
    }
}

И вот моя проблема.

Потому что * Блок местоположения 1019 * является эксклюзивным, если местоположение пользователя соответствует ~* ^/(.+)/guide$, но не ниже ie9, он ничего не делает. (что нужно сделать, так это перейти к правилу местоположения ниже, как и другим)

Какова наилучшая практика для этого обстоятельства? скопировать и вставить? или поставить блок внутри правила основного местоположения?

Я такой новичок ie до nginx, помогите мне, пожалуйста!

...