Назад | Перейти на главную страницу

Nginx - обратный прокси для IIS6 с авторизацией

в целях тестирования я установил обратный прокси 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 оставила меня с:

Работает

  • IE6 на XP
  • IE7 на XP
  • FF3.5 на XP (после изменения about: config)

Не работает (учетные данные никогда не принимаются)

  • FF3.5 в OS X
  • Safari 3 в OS X
  • Safari 4 на XP
  • Blackberry 8700 (Симулятор)
  • Blackberry 9000 (Симулятор)

Угадаю, почему мой (частично) работает, а ваш - нет ... Возможно, что-то важное для проксирования рукопожатия аутентификации, которое есть в моей конфигурации, но отсутствует в вашей? Например, пересылка реального 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 закончит следующую версию. Следующая версия должна исправить это (надеюсь)