в целях тестирования я установил обратный прокси nginx для сервера IIS6, он работает нормально.
Но когда я пытаюсь использовать «проверку подлинности Windows» на веб-сайте IIS6, ввод авторизации браузера не попадает.
После некоторого чтения я обнаружил очевидное :) nginx еще не поддерживает HTTP / 1.1 для обратного прокси!
Мой вопрос: знает ли кто-нибудь «обходной путь» для этого типа запросов?
Спасибо
У меня частично это работает в тестовой среде.
Задний план
У нас есть IIS6, обслуживающий нашу внутреннюю CMS (CMS - это плагин ISAPI). Это связано с настройкой сайта в IIS для интегрированной проверки подлинности Windows (как для безопасности, так и для персонализации пользователей).
Я хочу включить сжатие gzip, но из-за некоторых функций, которые мы включили в нашей CMS, мы не можем сделать это с помощью настроек gzip IIS (если мы это сделаем, он вылетает при каждом запросе к CMS).
Итак, в настоящее время я тестирую установку с обратным прокси-сервером nginx перед IIS, выполняющим сжатие содержимого.
Что работает / что нет?
IE6 / 7 auth через эту настройку по-прежнему работает нормально, мне не пришлось вносить никаких изменений.
Однако Firefox нуждался в изменении. Раньше без nginx в Firefox было network.automatic-ntlm-auth.trusted-uris
установлен, чтобы разрешить нашему серверу интрасети выполнять прозрачную NTLM-аутентификацию. Как только nginx стал частью этого микса, вам просто неоднократно показывалось окно входа на сайт, и ваши учетные данные никогда не были приняты. Однако добавление сервера интрасети в network.negotiate-auth.trusted-uris
исправлено (для Firefox в Windows, но не в OS X). Кажется, что способ аутентификации немного изменился? Где разрешение NTLM auth раньше работало нормально, теперь кажется, что это SPENGO?
Таким образом, текущая ситуация с nginx перед IIS6 оставила меня с:
Работает
Не работает (учетные данные никогда не принимаются)
Угадаю, почему мой (частично) работает, а ваш - нет ... Возможно, что-то важное для проксирования рукопожатия аутентификации, которое есть в моей конфигурации, но отсутствует в вашей? Например, пересылка реального IP клиента? Соответствующий серверный раздел моей конфигурации nginx находится ниже, если вы хотите попробовать.
server {
listen 80;
server_name testintralive;
location / {
proxy_pass http://localhost:81;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
proxy_read_timeout 120;
}
}
Единственный способ заставить его работать - это использовать базовую аутентификацию и ждать, пока igor закончит следующую версию. Следующая версия должна исправить это (надеюсь)