Рейтинг:1

Обратный прокси-сервер Apache на сайт с использованием аутентификации NTLM не работает с mod_rewrite, но не с mod_proxy

флаг ke

У нас есть обратный прокси-сервер перед сервером Exchange, и мы хотели бы заблокировать больше путей. Свернутые примеры:

Не работает (но работает для всех страниц, не требующих аутентификации):

<VirtualHost 192.168.1.81:443>
    ServerName autodiscover.example.com
    SSLEngine On
    SSLProxyEngine On
    Include conf/sslcert.conf
    RewriteEngine On

    RewriteRule (.*) https://exchangecluster.example.com$1 [P,L]
    ProxyPassReverse / https://exchangecluster.example.com/
</VirtualHost>

Работает:

<VirtualHost 192.168.1.81:443>
    ServerName autodiscover.example.com
    SSLEngine On
    SSLProxyEngine On
    Include conf/sslcert.conf
    RewriteEngine On

    ProxyPass / https://exchangecluster.example.com/
    ProxyPassReverse / https://exchangecluster.example.com/
</VirtualHost>

Запрос выполняется при использовании правила перезаписи и отвечает кодом 401 и предоставляет параметры для WWW-аутентификации, как и ожидалось. С ProxyPass работает аутентификация пользователя, а с RewriteRUle пользователю постоянно предлагается пройти аутентификацию, что, как я полагаю, связано с NTLM.

В StackExchange есть несколько вопросов, в которых говорится, что mod_proxy не может обрабатывать сквозную аутентификацию NTLM, но в этом случае он работает.

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

Обходной путь:

<VirtualHost 192.168.1.81:443>
    ServerName autodiscover.example.com
    SSLEngine On
    SSLProxyEngine On
    Include conf/sslcert.conf
    RewriteEngine On

    # Block all requests except the autodiscover URLs
    RewriteCond "%{REQUEST_URI}" "!^/autodiscover/autodiscover\.(?:xml|json|svc)$" [NC]
    RewriteRule ^ - [F]

    ProxyPass / https://exchangecluster.example.com/
    ProxyPassReverse / https://exchangecluster.example.com/
</VirtualHost>

А комментарий на другом вопрос предложил использовать mpm_prefork_module вместо mpm_worker_module. Я проверил наш 00_mpm.conf, и мы используем worker, и он работает с proxypass, поэтому кажется, что мы что-то упустили для опции прокси mod_rewrite.

Большинство вопросов, которые я обнаружил, касаются аутентификации обратного прокси-сервера через NTLM. Эти вопросы касаются прохождения аутентификации на сервере и сохранения сеанса без изменений, а не аутентификации от Apache (при условии, что это не требуется для выполнения этой работы).

Есть ли какие-либо настройки, которые необходимо включить, чтобы разрешить проксирование при использовании mod_rewrite?

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

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