Enabling HTTP/2 for Plesk


Browse by products and services

  • Applies to: DV
    • Difficulty: Medium
    • Time Needed: 15
    • Tools Required: Plesk administrator access, SSH access
  • Applies to: DV 4.0
    • Difficulty: Medium
    • Time Needed: 15
    • Tools Required: Plesk administrator access, SSH access
  • Applies to: DV Developer
    • Difficulty: Medium
    • Time Needed: 15
    • Tools Required: Plesk administrator access, SSH access

Overview

Good news! Plesk 12.5 (with update #28 and above) now includes support for HTTP/2. This is a major update to HTTP1.1, which is over 15 years old. As you know, the internet has grown quite a lot over that time. HTTP/2 is designed to be a nimbler, more reliable protocol than its predecessor. This article explains how to enable HTTP/2 on your Media Temple DV with Plesk. 

From the official HTTP/2 Github FAQ: "Why revise HTTP? HTTP/1.1 has served the Web well for more than fifteen years, but its age is starting to show. Loading a Web page is more resource intensive than ever (see the HTTP Archive’s page size statistics), and loading all of those assets efficiently is difficult, because HTTP practically only allows one outstanding request per TCP connection.In the past, browsers have used multiple TCP connections to issue parallel requests. However, there are limits to this; if too many connections are used, it’s both counter-productive (TCP congestion control is effectively negated, leading to congestion events that hurt performance and the network), and it’s fundamentally unfair (because browsers are taking more than their share of network resources). At the same time, the large number of requests means a lot of duplicated data “on the wire”. Both of these factors means that HTTP/1.1 requests have a lot of overhead associated with them; if too many requests are made, it hurts performance. This has led the industry to a place where it’s considered Best Practice to do things like spriting, data: inlining, domain sharding and concatenation. These hacks are indications of underlying problems in the protocol itself, and cause a number of problems on their own when used. "

  ct-kb-1_1

CloudTech Can Help!
Just want this taken care of by a professional? (mt) Media Temple will do this for you via CloudTech, our premium services division. To learn more, please click here.

Instructions

Use this guide to configure your Plesk-managed sites to use HTTP/2. 

Important Notes:

  • Nginx versions 1.9.14+ support HTTP/2. 
  • HTTP/2 will only work with an active SSL. In a push to make the internet more secure, no browser currently supports HTTP/2 over an unencrypted network. 

Google Chrome: A policy update for the Chrome web browser that was released in May/2016 removes support for NPN. This means that many Chrome users are seeing sites default back to HTTP/1. For Media Temple DVs managed with Plesk, support for HTTP/2 over Chrome is largely dictated by which version of CentOS you are using.

  • CentOS 6 - OpenSSL has not been updated in NGINX on Plesk for Centos 6. HTTP/2 can NOT be used in Google Chrome for CentOS 6 with Plesk at this time.
  • CentOS 7 - The latest micro-update of Plesk on CentOS 7 has OpenSSL 1.0.2h. Ensure that HTTP/2 continues working for Chrome users by updating to the latest version of Plesk.

1. Begin by making sure that you're using Plesk 12.5 (update #28 and above) and that it's updated. To update Plesk, use the update tool found in Tools & Settings >> Updates and Upgrades.

 

2. If you haven't done so, purchase and install an SSL. An SSL significantly increases the security of your site, and all browsers currently require one when using HTTP/2. You may also easily install a free SSL using the Let's Encrypt extension for Plesk. Instructions are found here. Sites that do not have an SSL enabled will default to using HTTP1.1. Media Temple SSL certificates offer a one-click domain-ownership verification option for domains using Media Temple DNS servers and also provide a one-click installation option for Plesk.

3. Verify that your version of Nginx is 1.9.14 or later and that it is running.

  • Navigate to Tools & Services >> Server Components. Scroll until you see Nginx and verify that the version is compatible with HTTP/2. This should be fine as long as you are using an up-to-date version of Plesk 12.5.
  • Navigate to Tools & Settings >> Service Management. Verify that Nginx is running. There should be a green check next to Reverse Proxy Server. If Nginx has been stopped, use the green arrow to the right of the service list to start it.                                                                                                              

4. SSH to your server and update the Nginx template. You'll need to use an editor. Help with using SSH may be found here. If you are unfamiliar with using BASH text editors, this article can help.  

  • SSH to your server and execute the following command. Any other editor such as vi or nano will also work fine:
vim /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php
  • Next, identify the following lines: 
listen escapedAddress . ':' . $OPT['frontendPort'] .
        ($OPT['default'] ? ' default_server' : '') . ($OPT['ssl'] ? ' ssl ' : '') ?>; 
  • Replace with the following:
listen escapedAddress . ':' . $OPT['frontendPort'] .
        ($OPT['default'] ? ' default_server' : '') . ($OPT['ssl'] ? ' ssl http2' : '') ?>;

  • save and quit
:wq
  • Update the Nginx template and restart the web server.
/usr/local/psa/admin/bin/httpdmng --reconfigure-all
service nginx restart

Your sites should now be using HTTP/2. If you have any questions or concerns, please feel free to contact our award winning 24/7 support team.  

Resources