У вас должна быть версия Nginx, скомпилированная с версией OpenSSL, включающей протокол ALPN. (NPN по-прежнему будет работать в Firefox ). Вы можете проверить версию OpenSSL, скомпилированную с вашим nginx, с помощью команды nginx -V
. Вам понадобится OpenSSL 1.0.2d, по крайней мере, для совместимости с HTTP/2.
Если у вас хорошая версия OpenSSL, вы также можете проверить наличие флага --with-http_v2_module
в результате nginx -V
.
Если вы не соблюдаете эти требования, вам придется перекомпилировать nginx самостоятельно или использовать готовый двоичный файл для совместимости с HTTP/2.
О порте 443 :Большинство браузеров (и сама реализация nginx )на самом деле не поддерживают порт 80 для HTTP/2.
Вам необходимо определить виртуальный хост по умолчанию в конфигурации Apache. После этого определите виртуальный хост с ServerName DNS-именем, на котором вы хотите найти свой веб-сайт.
Теперь запросы с таким именем в заголовке хоста будут обрабатываться этим виртуальным хостом, а любые другие запросы (с неправильным именем хоста или без него )будут обрабатываться виртуальным хостом по умолчанию (, который, вероятно, должен быть просто страница с сообщением о том, что был использован неправильный хост, или что-то подобное ).
Если используется SSL (https ), то запросы к IP-адресу все равно получат ошибку SSL, так как имя хоста (IP-адрес в этом случае )не соответствует имени хоста в SSL сертификат.
Использование Ubuntu 18.04, Apache 2.4.29.
Я думаю, что в apache2 есть vHost по умолчанию, то есть 000-default.conf
. Если ваш сайт доступен по IP, возможно, вы отключили эту конфигурацию по умолчанию.
Работа -около:
Отредактируйте 000-default.conf
и поместите туда редирект.
nano /etc/apache2/sites-available/000-default.conf
В000-default.conf
<VirtualHost *:80>
Redirect / https://www.contoso.com/
</VirtualHost>
<VirtualHost *:443>
Redirect / https://www.contoso.com/
</VirtualHost>
При необходимости включите конфигурацию.
a2ensite 000-default.conf
Перезагрузите Apache2.
systemctl reload apache2.service
Надеюсь, это поможет.