Apache 2.4: mod_alias, mod_rewrite, порядок выполнения mod_proxy

Я не могу найти никакой документации по приоритету / порядку выполнения инструкций Apache vhosts между

Есть ли какая-либо документация о порядке, в котором они будут обрабатываться Apache? Какой из них имеет приоритет над другим?

0
задан 10 May 2019 в 10:08
1 ответ

Общее правило состоит в том, что порядок директив важен. Директива, которая идет первой и соответствует , выигрывает (точно так же, как порядок определений VirtualHost - первый VHost является VHost по умолчанию).

В большинстве случаев он должен работать нормально, если вы определяете псевдоним es / Redirect s и RewriteRule сначала, а правила прокси, такие как ProxyPass , последними, если хотите, чтобы перенаправление происходило раньше применяются ваши настройки прокси.


http://httpd.apache.org/docs/2.4/mod/mod_alias.html#order

Псевдонимы и перенаправления, возникающие в различных контекстах, обрабатываются как и другие директивы согласно стандарту слияние правила . Но когда несколько псевдонимов или перенаправлений происходят в одном контексте (для например, в том же section) они обрабатываются в определенном порядке.

Во-первых, все перенаправления обрабатываются до обработки псевдонимов, и поэтому запрос, соответствующий Перенаправить или RedirectMatch никогда не будет иметь псевдонимов. Во-вторых, псевдонимы и перенаправления обрабатываются в том порядке, в котором они появляются в файлах конфигурации, с первое совпадение имеет приоритет.

По этой причине, когда две или более из этих директив применяются к тот же вложенный путь, вы должны сначала указать наиболее конкретный путь, чтобы все директивы должны иметь эффект.


https://httpd.apache.org/docs/2.4/mod/mod_rewrite.html # rewriterule

Директива RewriteRule - настоящая рабочая лошадка для перезаписи. В директива может встречаться более одного раза, причем каждый экземпляр определяет единое правило перезаписи. Порядок, в котором определены эти правила: важно - это порядок, в котором они будут применяться в время выполнения.

См. также: Apache mod_rewrite Технические подробности


https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#proxypass

Порядок директив ProxyPass
Настроенные правила ProxyPass и ProxyPassMatch проверяются в порядке настройки. В первое подходящее правило побеждает. Поэтому обычно вам следует сортировать конфликтующие ProxyPass правила, начиная с самых длинных URL-адресов. В противном случае позже правила для более длинных URL-адресов будут скрыты любым более ранним правилом, использующим ведущая подстрока URL-адреса. Обратите внимание, что есть некоторая связь с совместное использование работника.

Упорядочивание директив ProxyPass в локациях
Только одна директива ProxyPass может быть помещена в блок Location , и наиболее конкретный местоположение будет иметь приоритет.

Исключения и переменная среды без прокси
Исключения должны предшествовать общим директивам ProxyPass . В версии 2.4.26 и более поздних версиях переменная окружения "без прокси" является альтернативой исключениям, и это единственный способ настроить исключение ProxyPass директива в контексте Location . Эта переменная должна быть установлена ​​с SetEnvIf , поскольку SetEnv не оценивается достаточно рано.

1
ответ дан 4 December 2019 в 15:42

Теги

Похожие вопросы