Punts clau
HTTP/2 i SSL
PMF
Part 1: Apache (servidor web)
Part 2: cURL
HTTP/2 és la versió més recent del protocol HTTP, basat en SPDY. El seu desenvolupament va ser iniciat per Google i HTTP/2 es basa en gran mesura en la base de codis i els conceptes de SPDY.
SPDY ha quedat obsolet i l'adopció d'HTTP/2 a tot el món està en curs. Moltes empreses d'allotjament ja han proporcionat suport per a HTTP/2 a causa de la seva velocitat afegida.
En el moment d'escriure, DirectAdmin no ofereix una manera d'activar HTTP/2 amb un sol clic. Tanmateix, hi ha diverses maneres d'aconseguir el suport HTTP/2. El mètode que es descriu a continuació ha demostrat ser l'enfocament més robust i estable.
S'han d'actualitzar diversos components perquè HTTP/2 tingui efecte. Per això, us recomano fermament que feu una instantània. Si és possible, seguiu aquesta guia en un servidor completament nou.
Aquesta guia consta de dues parts: habilitar el suport HTTP/2 al servidor web (Apache) per als clients (visitants) i l'activació d'HTTP/2 a cURL. L'habilitació d'HTTP v2 per a cURL obliga les sol·licituds de cURL que s'originin des del vostre servidor a utilitzar HTTP/2 per als seus servidors de destinació, si és possible.
Punts clau
- No cal actualitzar tant Apache com cURL per utilitzar HTTP/2. Està bé si seguiu qualsevol de les guies, ja que funcionen per separat.
- Hi ha hagut alguns casos estranys en què Apache i HTTP/2 semblen funcionar bé, però la càrrega té èxit en navegadors ''aleatoris'' i els llocs esdevenen inaccessibles (temps d'espera) en altres. Simplement tornar a la configuració original d'Apache solucionarà això, ja que Apache no sabrà sobre HTTP/2 i no intentarà publicar-hi contingut.
- Feu sempre una còpia de seguretat o feu una instantània amb antelació. Habilitar HTTP/2 pot ser un procés relativament fràgil, per la qual cosa és important poder revertir els canvis si cal.
- La recompilació de programari sempre pot provocar un lleuger temps d'inactivitat. En alguns casos, això és inferior a un minut, però no hi ha manera de saber-ho exactament. Hauríeu d'estar preparat per a un temps d'inactivitat com a mínim.
- Necessiteu accés root al servidor per a aquesta guia. Si no teniu la capacitat d'elevar el vostre nivell de permisos a root, us hauríeu de posar en contacte amb l'administrador del servidor per habilitar HTTP/2 al servidor.
HTTP/2 i SSL
Tot i que no és un requisit tècnic del propi HTTP/2, en la majoria dels casos necessitareu un certificat SSL per utilitzar HTTP/2. Com s'ha dit, HTTP/2 no ho requereix tècnicament, però molts navegadors (Safari, Chrome, Firefox, etc.) han creat aquest estàndard. El contingut no es publicarà mitjançant HTTP/2 quan es carregui una pàgina sense SSL amb aquests navegadors. Tenint en compte que la majoria dels usuaris utilitzen aquests navegadors (i altres) que també participen en aquest estàndard, hauríeu d'utilitzar un certificat SSL.
Si busqueu un certificat SSL gratuït, hauríeu de fer una ullada a una de les nostres guies de Let's Encrypt:
Recomanat: instal·lar Let's Encrypt a DirectAdmin
Panells de control alternatius:
Guies generals:
PMF
Aquesta guia documenta la instal·lació de Brotli?
No, no hi ha cap mètode descrit per instal·lar Brotli juntament amb HTTP/2 en aquest article.
La compilació falla sense cap motiu, i he seguit els passos exactes que es descriuen en aquest article. Com ho resolc?
Tot i que hi ha molts motius possibles per a això, tenint en compte diferents entorns i similars, possiblement, la configuració regional no és correcta. Proveu de posar LC_ALL=Cdavant les vostres ordres, de manera que l'ordre per recompilar Apache es veuria així, per exemple: LC_ALL=C ./build apache
No oblideu l'espai entre LC_ALL=Ci l'ordre!
Perdré alguna dada?
En cas que actualment utilitzeu una configuració de proxy inversa, per exemple amb Apache i Nginx, hauríeu de tornar-la a Apache, en aquest cas, perdrieu els fitxers de configuració de Nginx. En cas que hàgiu fet configuracions personalitzades de VirtualHost (ja sigui mitjançant la línia d'ordres o el mateix DirectAdmin), hauríeu d'alterar-les per domini perquè les versions d'Apache es mantinguin actives. No perdrà cap dada pel que fa a dades d'usuari, contingut del lloc web, bases de dades, etc.
Aquestes versions personalitzades m'impediran actualitzar paquets i programari en el futur?
En general, no cal preocupar-se per això. Tenint en compte la configuració modular de DirectAdmin (i, per tant, de CustomBuild), hauríeu de poder baixar o actualitzar a altres versions de programari en el futur sense cap problema. Tot i que hauríeu de documentar els canvis en cas que es requereixi una ruta d'actualització alternativa en el futur, no hauríeu de preocupar-vos per les versions d'incompatibilitat amb les noves versions de programari.
DirectAdmin no ofereix HTTP/2 fora de la caixa; segurament això vol dir que no és compatible o que tenen els seus motius per no ser-ho. Per què és necessària aquesta solució alternativa?
Els mètodes per instal·lar i habilitar HTTP/2 que es descriuen a continuació no són tant solucions alternatives, sinó meres actualitzacions de paquets i canvis de configuració. A causa de la configuració modular de DirectAdmin, aquests canvis estan perfectament bé i no haurien de causar problemes ni altres problemes. És difícil determinar per què DirectAdmin no admet això fora de la caixa, atès que els autors no han donat una explicació per això. Tanmateix, una conclusió bastant sòlida és que DirectAdmin fa ús dels paquets de versió del sistema operatiu. En general, aquests no estan tan actualitzats com els paquets següents. No hi ha res dolent amb HTTP/2, la tecnologia en si mateixa i la seva compatibilitat. Igual que moltes altres tecnologies, pot trigar un temps a adaptar-se de manera nativa.
Quins són els possibles riscos d'activar HTTP/2 amb Apache?
En l'activació d'HTTP/2 (que consisteix en un procés d'actualització i configuració) hi ha moltes variables que poden resultar no estàndard. El risc més gran, però, rau en l'error humà. Feu una instantània abans, assegureu-vos d'anunciar el manteniment als vostres usuaris (si n'hi ha al servidor a part de vosaltres) i aneu amb compte. A més, no copieu i enganxeu les ordres sense pensar primer què fan.
Recomano molt fer girar temporalment una instància de núvol Vultr independent amb DirectAdmin i seguir els passos. En cas que alguna cosa surti malament en una instal·lació "fresca", sabreu on i com depurar-lo per no haver de fer-ho en un entorn de producció.
Part 1: Apache (servidor web)
Si actualment feu servir un servidor intermediari invers, hauríeu de tornar a un entorn només per a Apache. Això és perquè HTTP/2 és molt difícil de depurar si alguna cosa va malament. En poder fer ús de la funcionalitat HTTP/2 integrada d'Apache, podeu eliminar de manera efectiva una gran part dels problemes.
Pas 1: actualitzar OpenSSL
En molts casos, la vostra versió d'OpenSSL no és compatible amb ALPN, que és necessari per a HTTP/2. Per tant, activem ALPN actualitzant OpenSSL.
En primer lloc, assegurem-nos que la vostra versió d'OpenSSL no sigui compatible executant:
openssl version
Si la vostra versió d'OpenSSL és inferior a 1.1.0f, executeu el següent com a root. En cas contrari, passeu al pas 2.
cd ~
wget ftp://ftp.openssl.org/source/openssl-1.1.0f.tar.gz
tar xzf openssl-1.1.0f.tar.gz
cd openssl-1.1.0f
./config --prefix=/usr/local/lib_http2 no-ssl2 no-ssl3 zlib-dynamic -fPIC
make depend
make install
Pas 2: instal·lació de nghttp2
Perquè HTTP/2 funcioni, hem d'instal·lar nghttp2. Nghttp2 és una implementació d'HTTP/2 (i HPACK) en C. Nghttp2 és una versió combinada del client, servidor i servidor intermediari HTTP/2 en C.
Per instal·lar nghttp2, executeu les ordres següents. Afortunadament, nghttp2 es pot construir directament des de CustomBuild.
cd /usr/local/directadmin/custombuild
./build update
./build nghttp2
Pas 3: Habilitant HTTP/2 a Apache
Hem d'alterar uns quants valors al fitxer de configuració d'Apache per tal que faci ús d'HTTP/2. Quan el servidor web no rep instruccions per utilitzar una versió HTTP alternativa, no la farà servir. Per tant, hem d'afegir HTTP/2 al fitxer de configuració.
Perquè aquests canvis tinguin efecte, és necessària una reconstrucció d'Apache mitjançant CustomBuild. Com que els paràmetres i valors utilitzats per CustomBuild quan es construeix programari es determinen en un fitxer de configuració dedicat, la millor pràctica és posar aquests canvis en un fitxer de configuració personalitzat dedicat.
Nota: si no poseu aquests canvis en un fitxer personalitzat, el més probable és que es sobreescriuran i la vostra configuració es trencarà. Si us plau, seguiu les instruccions que s'indiquen a continuació.
Executeu les ordres següents per crear el fitxer i ompliu-lo prèviament amb els valors predeterminats perquè puguem modificar-lo després:
mkdir -p /usr/local/directadmin/custombuild/custom/ap2
cp -p /usr/local/directadmin/custombuild/configure/ap2/configure.apache /usr/local/directadmin/custombuild/custom/ap2/configure.apache
A partir d'ara, tenim un fitxer personalitzat que és idèntic al fitxer de configuració predeterminat per a Apache utilitzat per CustomBuild. Hem d'alterar el /usr/local/directadmin/custombuild/custom/ap2/configure.apachefitxer substituint la cadena següent:
"--with-ssl=/usr" \
amb:
"--enable-http2" \
"--enable-ssl-staticlib-deps" \
"--with-ssl=/usr/local/lib_http2" \
Nota: assegureu-vos que no hi hagi espai en blanc després de cap de les barres invertides . L'excés d'espai en blanc farà que la construcció es trenqui.
A continuació, reconstruïu Apache. CustomBuild utilitzarà el fitxer de configuració personalitzat que acabeu de crear:
./build apache
Pas 4: alteració de la configuració d'Apache
Ara s'ha reconstruït Apache amb els mòduls i la configuració necessaris per a HTTP/2. Això vol dir que ara tenim una versió d'Apache instal·lada al nostre servidor amb suport per a HTTP/2, però hem de dir-li a Apache que l'utilitzi primer.
Afegeix les següents línies a /etc/httpd/conf/extra/httpd-includes.conf:
ProtocolsHonorOrder On
Protocols h2 h2c http/1.1
Deseu aquests canvis i torneu a escriure els fitxers de configuració perquè siguin persistents durant les reconstruccions:
cd /usr/local/directadmin/custombuild
./build rewrite_confs
HTTP/2 ara hauria d'estar actiu al vostre servidor web (Apache).
Pas 5: reinicieu el servidor
Reinicieu el servidor per assegurar-vos que els nostres canvis persisteixen durant els reinicis. Si us plau, reinicieu el servidor mitjançant el tauler de control de Vultr o executant l' rebootordre.
Pas 6: prova HTTP/2
La funcionalitat d'HTTP/2 es pot provar fàcilment mitjançant l'eina següent: Prova HTTP/2
Tenint en compte que HTTP/2 és específic del servidor i no es pot restringir a un parell de dominis o llocs web específics, hauria de funcionar introduint qualsevol nom de domini que apunti al servidor o fins i tot l'adreça IP del servidor.
La prova us dirà si és capaç d'arribar al servidor web mitjançant HTTP/2. En cas que l'eina digui que HTTP/2 està activat al vostre servidor, ara es pot accedir als llocs web de DirectAdmin mitjançant HTTP/1.1 o HTTP/2. En cas que el suport HTTP/2 no estigui disponible per al client (visitant), el seu navegador tornarà a utilitzar HTTP/1.1.
En cas que l'eina no pugui arribar al vostre servidor web mitjançant HTTP/2, torneu a seguir els passos anteriors. En general (com que els passos anteriors no sobreescriuen res activament), això no danyarà ni trencarà la vostra configuració.
Part 2: cURL
Recomano actualitzar cURL perquè pugui arribar als servidors amb suport HTTP/2. En cas que un servidor no admeti HTTP/2, tornarà a ser HTTP/1.1.
Pas 1: afegir el fitxer de configuració personalitzat
Igual que amb Apache, crearem un fitxer de configuració personalitzat, de manera que cURL creat per CustomBuild utilitzarà la nostra configuració personalitzada.
Creeu el directori:
mkdir -p /usr/local/directadmin/custombuild/custom/curl
Creeu el fitxer:
touch /usr/local/directadmin/custombuild/custom/curl/configure.curl
Copieu i enganxeu el contingut següent al fitxer:
#!/bin/sh
perl -pi -e 's|CURL_CHECK_PKGCONFIG\(zlib\)|#CURL_CHECK_PKGCONFIG(zlib)|g' configure.ac
LIBS="-ldl" ./configure --with-nghttp2=/usr/local --with-ssl=/usr/local/lib_http2
Com podeu veure, aquests continguts indiquen que cURL s'ha de compilar mitjançant la lib_http2biblioteca SSL.
Deseu el fitxer i doneu-li els permisos correctes:
chmod 700 /usr/local/directadmin/custombuild/custom/curl/configure.curl
Pas 2: Creació de cURL
A continuació, tot el que hem de fer és crear cURL.
cd /usr/local/directadmin/custombuild
./build curl
cURL ara s'ha compilat amb suport HTTP 2.