Рейтинг:1

Перезапись и возврат Nginx мешают другому блоку местоположения

флаг cn

У меня есть следующая конфигурация в nginx для перенаправления в определенном сценарии.

местоположение / префикс-someurl {
   если (условие) {
            вернуть 301 $схема://$host/xyz.html;
   }
   proxy_pass какое-то значение;
}

а в другом блоке есть такие правила перезаписи

местоположение /someurl {
   если (условие) {
            переписать ^(.*)abc(.*)$ $1test/abc$2 break;               
            переписать ^(.*)someurl/$(.*) $1someurl/test/index.html$2;

   }
   значение proxy_pass;
}

Вышеупомянутая конфигурация работает как задумано. Однако, если для последнего я делаю эту модификацию;

местоположение /someurl {
   если (условие) {
            вернуть 301 $схема://$host/xyz.html;
   }
   если (условие) {
            переписать ^(.*)abc(.*)$ $1test/abc$2 break;               
            переписать ^(.*)someurl/$(.*) $1someurl/test/index.html$2;

   }
   значение proxy_pass;
}

Я получаю слишком много ошибок перенаправления для доступа / префикс-someurl.Если я изменю /someurl к следующему ошибка уходит;

местоположение /someurl {
  если (условие) {
        вернуть 301 $схема://$host/xyz.html;
  }    
  значение proxy_pass;
}

Я не могу понять, почему модифицировать /someurl оказывает влияние на / префикс-someurl. Или я что-то упустил в оценке перезаписи nginx. Понимание этого будет оценено.

Richard Smith avatar
флаг jp
Вам нужно идентифицировать каждый шаг в цикле. Используйте curl -I для проверки отдельных перенаправлений. Кроме того, включите [`rewrite_log`](http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite_log), чтобы получать диагностику от механизма перезаписи.
флаг us
Скорее всего, вы найдете ответ на странице https://www.nginx.com/resources/wiki/start/topics/depth/ifisevil/. Вместо `if` вы должны использовать `map` и использовать другую стратегию для ваших условий.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.