2016-12-07 1 views
2

Я управляю сервером (размещенным VPS), который мы используем в качестве общей среды размещения для сайтов, которые мы создаем для наших клиентов. Все новые сайты, которые мы построим в будущем, будут работать на HTTPS, но большинство старых сайтов не настроены на поддержку HTTPS. Скорее всего, мы скоро их преобразуем, но мы еще не совсем там.Могу ли я безопасно включить HTTP/2 на сервере, совместно используемом с сайтами, отличными от SSL/TLS?

Я бы хотел включить HTTP/2, чтобы новые сайты могли его использовать, но я не могу вмешиваться в старые сайты, которые до сих пор продолжают обслуживаться через HTTP/1. Не будут ли сайты без сертификатов SSL/TLS автоматически отказываться от HTTP/1, или браузеры обнаружат поддержку HTTP/2 и попытаются подключиться через SSL/TLS, создав недопустимое предупреждение безопасности сертификата? Есть ли что-нибудь, что я могу/должен сделать, чтобы обеспечить правильное поведение?

Мы используем Plesk Onyx 17 на CentOS 6, используя Apache с nginx в качестве обратного прокси-сервера, если это важно.

+0

Nginx может обслуживать несколько сайтов с различными конфигурациями, тогда вы можете использовать один сайт с использованием HTTP/1, другие с помощью HTTP/2 + HTTPS, так что в этом проблема? – laike9m

+0

Я не использую Plesk, это дает вам разрешение редактировать файл конфига Nginx? – laike9m

+0

Я в первую очередь разработчик и использую Plesk для большинства серверов. В Plesk нет возможности установить HTTP-версию для каждого сайта, о которой я знаю. У меня ограниченное знакомство с конфигурационными файлами nginx, поэтому вполне возможно, что я не вижу здесь очевидного ответа. Если вы предлагаете мне вручную отредактировать файл конфигурации каждого сайта отдельно, это правильный ответ. Но обратите внимание, что «совместным хостингом» я имел в виду vhosts на общем IP-адресе. Я думал, что прочитал, что nginx может настраивать только разные HTTP-протоколы по IP-адресу. Я мог бы, вероятно, размахивать вторым IP, если это единственное решение. –

ответ

0
upstream oldhttp1site { 
    server 127.0.0.1:8000; # Apache instance listens on port 8000 
} 

upstream newhttp2site { 
    server 127.0.0.1:8001; 
} 

http { 
    server { 
     listen  80; 
     server_name www.domain1.com; 
     proxy_pass http://localhost:8000/; 
    } 

    server { 
     listen 443 ssl http2 default_server; 
     server_name www.domain2.com; 

     ssl_certificate /path-to/yoursite.chain.crt; 
     ssl_certificate_key /path-to/yoursite.key; 
     # other HTTP/2 and SSL specific settings 

     proxy_pass http://localhost:8001/; 
    } 
} 

Это абсолютно возможно. Просто чтобы дать вам базовую идею.

Смежные вопросы