Вопрос или проблема
Что бы я ни пробовал, я не могу заставить свой веб-сайт обслуживать файлы (например, изображения, js и т. д.) по http/2, он продолжает обслуживать по http/1.
Что я пробовал:
-
С помощью IIS Crypto я настроил это (даже отключил tls1.0 и tls1.1):
-
Отключил поддержку tls1.0 и tls1.1 через настройки Internet Explorer: https://markcz.wordpress.com/2014/10/26/full-http2-support-in-windows-10/
-
Принудил https через web.config:
<!-- Перенаправление HTTP на HTTPS для www --> <rule name="Принудить HTTPS для www" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{HTTPS}" pattern="off" ignoreCase="true" /> <add input="{HTTP_HOST}" pattern="^www\.example\.com$" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:0}" redirectType="Permanent" /> </rule>
-
Предоставил группе IIS_IUSRS права на чтение в корневом каталоге
-
Включил анонимную аутентификацию для моего веб-сайта
-
У меня есть https привязки для моего веб-сайта: отключил “Отключить HTTP/2”, включил “Требовать указание имени сервера”, привязано к порту 443, IP-адрес установлен на “Все не назначенные”
Ответ или решение
Для включения HTTP/2 на Windows Server 2019, необходимо убедиться, что все необходимые настройки сделаны правильно. Я вижу, что вы уже предприняли несколько шагов, но давайте еще раз проверим все шаги и убедимся, что ничего не упущено.
-
Используйте правильные настройки шифрования:
Убедитесь, что на вашем сервере настроены только безопасные протоколы TLS. Хотя вы уже использовали IIS Crypto, рекомендую также проверить список шифров для TLS 1.2 и убедиться, что только современные и безопасные шифры активны. -
Настройка IIS:
- Убедитесь, что HTTP/2 включен в IIS. В Windows Server 2016 и более поздних версиях HTTP/2 включается по умолчанию. Вы можете проверить, включен ли он, изменив настройки в реестре. Откройте редактор реестра (regedit) и пройдите по следующему пути:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS\Parameters
Здесь убедитесь, что значение
EnableHttp2
установлено на1
. Если его нет, создайте DWORD-значение с именемEnableHttp2
и установите его значение на1
.
- Убедитесь, что HTTP/2 включен в IIS. В Windows Server 2016 и более поздних версиях HTTP/2 включается по умолчанию. Вы можете проверить, включен ли он, изменив настройки в реестре. Откройте редактор реестра (regedit) и пройдите по следующему пути:
-
Проверка HTTPS:
Убедитесь, что у вас есть корректный сертификат и что он правильно настроен. HTTP/2 работает только по HTTPS. На вашем сайте должна быть активна поддержка HTTPS. -
Настройки привязки:
Убедитесь, что в настройках привязки вашего сайта в IIS:- Проверка, что "Disable HTTP/2" не отмечено.
- Проверка, что установлен флажок "Require Server Name Indication".
- Привязка к порту 443 и IP-адресу "Все допустимые".
-
Изменение конфигурации приложения:
Убедитесь, что вweb.config
вашего приложения ничего не блокирует использование HTTP/2 и что ваши правила перенаправления настроены корректно. Вы уже сделали перенаправление с HTTP на HTTPS, что является правильным шагом. -
Тестирование:
После внесения всех изменений перезапустите IIS. Используйте инструменты, такие как Google Chrome Developer Tools, чтобы проверить, используется ли HTTP/2. Откройте вкладку "Сеть" и обновите страницу, затем посмотрите на детали протокола. -
Логи и мониторинг:
Если после всех этих изменений HTTP/2 не активируется, просмотрите логи IIS на предмет ошибок. Это может дать указания на потенциальные проблемы в конфигурации или взаимодействии.
Следуя этим шагам, ваш сайт должен начать обслуживаться по протоколу HTTP/2. Если проблема сохраняется, возможно, стоит рассмотреть возможность дополнительных настроек сети или обратиться к специалистам для диагностики и решения проблемы.