The HTTP/2 protocol is an improvement of its predecessor HTTP/1.1. It provides numerous benefits and improvements such as faster page loading speeds and increased security. If you are running Nginx on HTTP/1.1, then you should consider migrating to HTTP/2.
Here at LinuxAPT, as part of our Server Management Services, we regularly help our Customers to perform related Nginx Http queries.
In this context, we shall look into How to enable HTTP/2 on Nginx on Ubuntu 20.04.
Before you set up HTTP/2 on your Nginx webserver, ensure you have the following:
The Nginx web server should be v 1.9.5 or greater. Previously, We dealt with a guide on how to install Nginx on Ubuntu 20.04 . To check the version of Nginx installed in the system, simply run the below command:
$ nginx -V
Also, ensure that you have OpenSSL 1.0.2 or later versions. To verify the version you are running, issue the command:
$ openssl version
Note that for this to work correctly, you need to have the webserver encrypted with an SSL certificate. Here, our webserver is encrypted using the Let's Encrypt SSL certificate. Already we have this set up where our domain name is ibmimedia.com and pointed to our virtual server's IP address. Additionally, we have configured a virtual host file for the domain.
Finally, your server must be using TLS v 1.2 and later versions.
Now, perform the below steps.
To get started out, we need to verify that our web server is currently using HTTP/1.1. To achieve this, we will run the curl command shown:
$ curl -I https://domain-name
In our case, this is going to be:
$ curl -I https://ibmimedia.com
The first line of the output clearly indicates that we are using HTTP/1.1
To enable HTTP/2 we need to edit or modify the domain's virtual host file.
$ sudo vim /etc/nginx/sites-available/ibmimedia.com
Locate this line:
listen 443 ssl
Append the attribute http2 just after ssl.
In case you have a line that starts as follows:
listen [::]:443 ssl …
Add the http2 attribute as well.
Save the changes and exit.
Once you have exited the virtual host file, restart the Nginx webserver:
$ sudo systemctl restart nginx
Next, check if the Nginx configuration is sound:
$ sudo nginx -t
From the output, if the Nginx configuration file syntax and test is fine, then Nginx configuration is OK.
Finally, to verify if HTTP/2 is enabled, execute the below curl command:
$ curl -I https://ibmimedia.com
You will see from the output that HTTP/2 is now enabled.
This article covers how to enable HTTP/2 on the Nginx webserver on Ubuntu 20.04. In fact, the primary focus of HTTP/2 is to reduce overall web page loading time, thus improving performance. It also focuses on network and server resource usage as well as security because, with HTTP/2, SSL/TLS encryption is mandatory.
If the Nginx server is sitting behind a web application firewall, ensure that the web application firewall (WAF) is capable of parsing HTTP/2 traffic.
HTTP/2 protocol main advantage over its predecessor HTTP 1.1 is that it has a higher transfer speed required for content-rich websites.