Com habilitar HTTP/2 a Apache a Ubuntu
Des de la creació de la World Wide Web (www), el protocol HTTP ha evolucionat al llarg dels anys per oferir contingut digital segur i ràpid a Internet.
La versió més utilitzada és HTTP 1.1 i, tot i que inclou millores de funcions i optimitzacions de rendiment per abordar les deficiències de les versions anteriors, no té algunes altres funcions destacades que s'han abordat per HTTP/2.
El protocol HTTP/1.1 està ple de les següents deficiències que el fan menys ideal, especialment quan s'executen servidors web d'alt trànsit:
- Retards en la càrrega de pàgines web a causa de les capçaleres HTTP llargues.
- HTTP/1.1 només pot enviar una sol·licitud per a cada fitxer per connexió TCP.
- Atès que HTTP/1.1 processa una sol·licitud per cada connexió TCP, els navegadors es veuen obligats a enviar un diluvi de connexions TCP paral·leles per processar les sol·licituds simultàniament. Això comporta una congestió de TCP i, en última instància, un malbaratament d'ample de banda i una degradació de la xarxa.
Els problemes esmentats anteriorment sovint van provocar una degradació del rendiment i uns costos generals elevats en l'ús de l'ample de banda. HTTP/2 va entrar en escena per solucionar aquests problemes i ara és el futur dels protocols HTTP.
Ofereix els següents avantatges:
- Compressió de capçalera que minimitza les sol·licituds dels clients i, per tant, redueix el consum d'ample de banda. L'efecte resultant són velocitats ràpides de càrrega de la pàgina.
- Multiplexació de diverses sol·licituds mitjançant una connexió TCP. Tant el servidor com el client poden dividir una sol·licitud HTTP en diversos marcs i reagrupar-los a l'altre extrem.
- Rendiments web més ràpids que, per tant, condueixen a una millor classificació de SEO.
- Seguretat millorada ja que la majoria dels navegadors convencionals carreguen HTTP/2 mitjançant HTTPS.
- HTTP/2 es considera més adaptat per a mòbils gràcies a la funció de compressió de capçalera.
Dit això, habilitarem HTTP/2 a Apache a Ubuntu 20.04 LTS i Ubuntu 18.04 LTS.
Abans de començar, assegureu-vos d'habilitar HTTPS al servidor web Apache abans d'habilitar HTTP/2. Això es deu al fet que tots els navegadors web principals admeten HTTP/2 sobre HTTPS. Tinc un nom de domini apuntat a una instància a Ubuntu 20.04 que és el certificat Let's Encrypt.
A més, es recomana que tingueu Apache 2.4.26 i versions posteriors per als servidors de producció que tinguin la intenció de fer un canvi a HTTP/2.
Per comprovar la versió d'Apache que esteu executant, executeu l'ordre:
$ apache2 -v
A la sortida, podeu veure que estem utilitzant la darrera versió, que és Apache 2.4.41 en el moment de redactar aquest article.
Habiliteu HTTP/2 en un host virtual Apache
Per començar, primer confirmeu que el servidor web està executant HTTP/1.1. Podeu fer-ho en un navegador obrint la secció d'eines per a desenvolupadors a Google Chrome mitjançant la combinació Ctrl + MAJÚS + I
. Feu clic a la pestanya Xarxa i localitzeu la columna Protocol.
A continuació, activeu el mòdul HTTP/2 a Ubuntu executant l'ordre següent.
$ sudo a2enmod http2
A continuació, localitzeu i editeu el vostre fitxer d'amfitrió virtual SSL, si heu habilitat HTTPS mitjançant Let's Encrypt, es crea un fitxer nou amb un sufix le-ssl.conf.
$ sudo vim /etc/apache2/sites-enabled/your-domain-name-le-ssl.conf
Inseriu la directiva següent després de l'etiqueta
.
Protocols h2 http/1.1
Per desar els canvis, reinicieu el servidor web Apache.
$ sudo systemctl restart apache2
Per comprovar si HTTP/2 està habilitat, obteniu les capçaleres HTTP mitjançant l'ordre curl següent, tal com es mostra.
$ curl -I --http2 -s https://domain.com/ | grep HTTP
Hauríeu d'obtenir la sortida que es mostra.
HTTP/2 200
Al navegador, torneu a carregar el vostre lloc. A continuació, torneu a les eines de desenvolupament i confirmeu HTTP/2 indicat per l'etiqueta h2
a la columna Protocol.
Quan utilitzeu el mòdul mod_php amb Apache
Si esteu executant Apache juntament amb el mòdul mod_php, haureu de canviar a PHP-FPM. Això es deu al fet que el mòdul mod_php utilitza el mòdul MPM prefork que no és compatible amb HTTP/2. Heu de desinstal·lar el prefork MPM i canviar al mòdul mpm_event que serà compatible amb HTTP/2.
Si utilitzeu el mòdul PHP 7.4 mod_php, per exemple, desactiveu-lo tal com es mostra:
$ sudo a2dismod php7.4
A continuació, desactiveu el mòdul MPM prefork.
$ sudo a2dismod mpm_prefork
Després de desactivar els mòduls, a continuació, activeu els mòduls Event MPM, Fast_CGI i setenvif tal com es mostra.
$ sudo a2enmod mpm_event proxy_fcgi setenvif
Instal·leu PHP-FPM a Ubuntu
A continuació, instal·leu i inicieu PHP-FPM tal com es mostra.
$ sudo apt install php7.4-fpm $ sudo systemctl start php7.4-fpm
A continuació, activeu PHP-FPM perquè s'iniciï en el moment de l'arrencada.
$ sudo systemctl enable php7.4-fpm
A continuació, activeu PHP-FPM com a controlador de PHP d'Apache i reinicieu el servidor web Apache perquè es realitzin els canvis.
$ sudo a2enconf php7.4-fpm
Activeu el suport HTTP/2 a Apache Ubuntu
A continuació, activeu el mòdul HTTP/2 com abans.
$ sudo a2enmod http2
Reinicieu Apache per sincronitzar tots els canvis.
$ sudo systemctl restart apache2
Finalment, podeu provar si el vostre servidor utilitza el protocol HTTP/2 mitjançant l'ordre curl tal com es mostra.
$ curl -I --http2 -s https://domain.com/ | grep HTTP
També podeu optar per utilitzar les eines per a desenvolupadors del navegador Google Chrome per verificar com s'ha documentat anteriorment. Hem d'arribar al final d'aquesta guia. Esperem que la informació sigui valuosa i que pugueu habilitar HTTP/2 a Apache amb facilitat.