KeyCDN is a registered trademark and service of proinity LLC, a privately funded company headquartered in Switzerland. We are a leading European CDN provider that has built a next-generation content delivery architecture from the ground up. Our mission is to develop and engineer a content delivery solution that is accessible to as many people as possible. KeyCDN is not based on a federated CDN or any other form of reselling.
Your experience is in focus, therefore, a simple and easy CDN management is important to us. Our CDN gets you started in just a few clicks but also offers a multitude of configuration options. We operate a state of the art infrastructure for you, which gives you the advantage to focus on your core business. KeyCDN makes content delivery smarter and less expensive.
Lazy Loading Pictures Test
How to enable HTTP/2 support in Apache
Ubuntu / Debain
Apache web server distributed in default software repositories of Ubuntu and Debian do not include
mod_http2
needed to enable HTTP/2 functionality. You will need to add a third-party package source with latest Apache version that also inludesmod_http2
.apt-get install software-properties-common python-software-properties add-apt-repository ppa:ondrej/apache2 apt-get updateThis will install some utilities (if not installed already) that help us add external PPAs. Secondly, we add the ondrej/apache2 PPA which contains the latest Apache2 builds. Third, we update your systems package information.
apt-get install apache2 apachectl -vThis is to upgrade your existing Apache2 version to the latest version. After upgrading, the
apachectl -v
command will reveal your upgraded Apache version. This will be2.4.29
or later.Enable HTTP/2 module
Apache’s HTTP/2 support comes from the
mod_http2
module. Enable it from:a2enmod http2 apachectl restartAdd HTTP/2 Support
We highly recommend you enable HTTPS support for your web site first. Most web browser simply do not support HTTP/2 over plain text. Besides, there are no excuses to not use HTTPS anymore. HTTP/2 can be enabled site-by-site basis. Locate your web site's Apache virtual host configuration file, and add the following right after the opening<VirtualHost>
tag:Protocols h2 http/1.1Overall, your configuration file should look something like this:<VirtualHost *:443> Protocols h2 http/1.1 ServerAdmin you@your-awesome-site.com ServerName your-awesome-site.com ... </VirtualHost>After the changes, don't forget to reload/restart Apache.apachectl restartPush resources
Apache supports HTTP/2 Push feature as well. After enabling Apache HTTP/2, you can add push support simply by setting HTTPLink
headers. You can emit them from either/both the Apache configuration file, or from your application.Link: </assets/styles.css>;rel=preload, </assets/scripts.css>; rel=preloadAbove is an example header that would trigger Apache to push the/assets/styles.css
and/assets/scripts.scc
files. Refer to your application code on how to emit HTTP headers. If you would like to make Apache add these headers, you can do so like this, using themod_headers
module.<Location /index.htmll> Header add Link "</assets/styles.css>;rel=preload, </assets/scripts.css>; rel=preload" Header add Link "</assets/image.jpg>;rel=preload"Apache 2.4.27, HTTP/2 not supported in prefork
Starting from Apache 2.4.27, the Apache MPM (Multi-Processing Module)prefork
no longer supports HTTP/2. This will be indicated in your Apache error log as follows:AH10034: The mpm module (prefork.c) is not supported by mod_http2. The mpm determines how things are processed in your server. HTTP/2 has more demands in this regard and the currently selected mpm will just not do. This is an advisory warning. Your server will continue to work, but the HTTP/2 protocol will be inactive.To fix this, select a different MPM:event
orworker
. We highly recommend you to use theevent
prefork. If you are using PHP, it is likely that PHP is integrated to Apache via themod_php
module, which requires theprefork
MPM. If you switch out frompreform
MPM, you will need to use PHP asFastCGI
. To switch tophp-fpm
, you can do as folllwing. Please note that this assumes you have PHP installed from ondrej/php repository on Ubuntu. The PHP package names could be different in other repositories. Change package name andapt-get
commands to match your PHP vendor and package manager.apachectl stop apt-get install php7.1-fpm # Install the php-fpm from your PHP repository. This package name depends on the vendor. a2enmod proxy_fcgi setenvif a2enconf php7.1-fpm # Again, this depends on your PHP vendor. a2dismod php7.1 # This disables mod_php. a2dismod mpm_prefork # This disables the prefork MPM. Only one MPM can run at a time. a2enmod mpm_event # Enable event MPM. You could also enable mpm_worker. apachectl startHTTP/2 not enabled on older TLS versions
Mozilla Firefox (among other browsers) does not enable HTTP/2 protocol unless the connection is made over TLS 1.2 and using modern cipher suits. This is not a technical limitation, but rather a safety precaution. Make sure your that your site supports TLS 1.2, and modern cipher suits with AES/CHACHA20 with forward-secrecy key exchanges. In turn, Apache does not try to establish an HTTP/2 connection with connections over older cipher configurations either. you can force Apache attempt HTTP/2 upgrade with the following directive, but it will not be as effective because browsers do not support HTTP/2 from their end anyway.H2ModernTLSOnly off