В настоящее время я использую Apache 2.2.3 и CentOS 5.4 для своих приложений php (php работает на 5.3.7), а приложение работает на HTTPS и с сертификатом Root CA.
Проблема в том, что у нас были некоторые странные проблемы с IE9 (только IE9). Когда браузер IE9 отправляет запрос HTTPS на наш сервер, иногда нет ответа HTTPS. Я заметил, что IE9 обновит страницу. Чтобы быть более конкретным, упомянутая страница является страницей входа. Поэтому, когда я ввожу имя пользователя и пароль и отправляю форму, но ответа нет, кажется, что IE9 снова загружает ту же страницу входа. (с пустым именем пользователя и паролем)
При трассировке с уровня приложения я замечаю, что получил имя пользователя и пароль, и приложение завершилось без ошибок.
Основная головная боль состоит в том, что это не может быть воспроизведено каждый раз. Иногда мы можем войти без каких-либо проблем, но иногда это будет иметь упомянутую выше проблему, упомянутую выше.
Теперь в нашу компанию попали сетевые команды, разработчики и другие команды. Наш apache работает под балансировщиком нагрузки. Сетевые парни утверждают, что они никогда не меняют никаких настроек, единственное изменение - это наше приложение. Но с точки зрения разработчиков изменения никак не связаны с процессом входа в систему.
С моей точки зрения, похоже, что когда пользователь нажимает кнопку «Отправить», приложение (apache) делает то, что делает, отправляя HTML (HTTPS Response), но HTML каким-то чудесным образом исчезает в сети. Я подозреваю, что есть какое-то отношение к поддержанию связи? Вероятно, браузерный агент IE9 обрабатывает его по-другому, и каким-то образом он считает, что соединение не установлено и перезагружает страницу для повторной попытки?
Но в любом случае я заметил следующие настройки в Apache для доступа SSL:
SetEnvIf Пользователь-агент ". MSIE. " \ Nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
Не знаете, как мы можем настроить таким образом, чтобы исключить IE9 и выше? Когда я выполняю поиск, вышеуказанные настройки должны исправить давнюю проблему, когда IE соединяется с Apache. Но поскольку IE9 является совершенно новым, возможно, проблема уже устранена, и что нам нужно обновить настройки?
Надеюсь, кто-то может пролить свет на это ..
источник
Ответы:
Скорее всего, настройка сервера / сети где-то имеет проблему и не вызвана какими-либо причудами IE9.
Прежде всего, избавьтесь от древней конфигурации до IE6:
SetEnvIf User-Agent ".MSIE." \ nokeepalive ssl-unclean-shutdown \ downgrade-1.0 force-response-1.0
и просто попробуйте запустить ее вообще (в любых формах). Если вам не нужна поддержка IE5, что я сомневаюсь, что вы делаете, в этом случае вы правы, чтобы изменить регулярное выражение наMSIE [2-5]
Балансировщик нагрузки и отсутствие поддержки активности, вероятно, является проблемой. Я бы очень подозрительно относился к балансировщику нагрузки и точно проверял, что там происходит.
Балансировщик нагрузки обычно «балансирует нагрузку» между двумя или более IP-адресами (внутренним или внешним, это не имеет значения в данный момент).
Тогда, не имея keepalive для соединений между запросами, клиентский компьютер / браузер должен будет выполнять согласование SSL для каждого запроса. Объедините это с медлительностью и низкими настройками тайм-аута, и мы можем получить проблемы с несоответствием сертификата SSL, и IE, вероятно, будет освобожден из-за строгой настройки безопасности. Я не исследовал точно, имеет ли IE9 только эту черту. Я подозреваю, что другие браузеры тоже делают это и работают с этим по-другому.
Если вы используете SSL, вы должны иметь KeepAlive, так как это сделает сайт намного быстрее и не придется проходить SSL-согласование снова и снова, что приводит к сбою, потому что балансировщик нагрузки не поддерживает сеанс на одном и том же сервере в течение времени жизни посетителя. ,
Если ваше приложение является внутренним (в интрасети), ваш балансировщик нагрузки случайным образом перебрасывает IP-адреса на вас, и SSL должен быть одинаковым для каждого соединения.
Если это не входит в интрасеть, то это может быть правдой, я не знаю, как настроена ваша сеть, но вам следует сначала проверить это. Отключите балансировщик нагрузки и посмотрите, существует ли проблема. и, безусловно, положить сохранить в живых.
http://httpd.apache.org/docs/2.2/mod/core.html#keepalive
Я бы также проверил, есть ли у вас обратная настройка DNS вообще. Если это указывает на балансировщик нагрузки или сервер позади балансировщика нагрузки или что нет.
Проверьте ваше соединение и проанализируйте ваши заголовки, если внешние используют что-то вроде redbot.org или webpagetest.org, чтобы проверить, какие заголовки отправляются. Также вы можете использовать что-то вроде скрипача
источник