Aktiver HTTP/2 i Nginx på Ubuntu 16.04

HTTP/2 er den nye versjonen av nå foreldet HTTP/1.1-protokoll som ble standardisert helt tilbake i 1999. Mye har endret seg på nettet siden den gang. Våre applikasjoner er mer komplekse enn de var tilbake enn, så for å takle det var endring i den underliggende transportprotokollen nødvendig. Det viktigste med HTTP/2 er at det vil gjøre nettsiden din raskere for sluttbrukerne.

Kort fortalt legger HTTP/2 til 5 nøkkelfunksjoner:

  • Enkel, vedvarende forbindelse
  • Multipleksing
  • Topptekstkomprimering
  • Ressursprioritering
  • Sikrer transportlag (kun gyldig for nettlesere)

Å forklare alle disse funksjonene er utenfor omfanget av denne opplæringen, men hvis du vil grave dypere inn i dette emnet, kan jeg anbefale et utdrag fra boken High Performance Browser Networking - HTTP/2-utdrag .

I denne guiden skal vi installere siste stabile versjon av Nginx på Ubuntu 16.04 (Xenial), generere selvsignert SSL-sertifikat, aktivere HTTP/2- protokoll i Nginx og installere tekstbasert nettleser for elinkså fungere som HTTP-klient.

Installer Nginx

For å installere den siste stabile versjonen av Nginx må vi utstede ganske mange kommandoer:

  1. Vi må laste ned Nginx offentlige PGP-nøkkel som brukes til å signere pakker og depoter og legge den til i nøkkelringen som brukes av pakkebehandleren for å bekrefte ektheten til pakker som er lastet ned fra depotet.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. Slett PGP-nøkkelen fra filsystemet:

    rm nginx_signing.key
    
  3. Legg til nytt depot

    printf "deb http://nginx.org/packages/ubuntu/ xenial nginx \ndeb-src http://nginx.org/packages/ubuntu/ xenial nginx \n" >> /etc/apt/sources.list.d/nginx.list
    
  4. Oppdater pakkelisten og installer Nginx:

    apt update && apt install nginx -y
    
  5. For å bekrefte Nginx-versjonen kan vi bruke følgende:

    nginx -v 
    # nginx version: nginx/1.10.1
    

    Hvis alt går bra bør du se mønster som 1.10.xi utdataene når du kjører nginx -vkommandoen.

Selvsignert sertifikat og HTTP/2

Although HTTP/2 spec doesn’t force browsers to implement HTTP/2 over TLS, all major browsers decided to only implement HTTP/2 over TLS, but not any TLS version, only TLS 1.2 or higher.

Vi skal lage selvsignerte sertifikater for fiktivt example.comdomene, for produksjon trenger du gyldig domene og bruker pålitelig CA.

  1. Generer privat nøkkel:

    openssl genrsa -aes128 -out example.com.key 2048
    

    Etter å ha kjørt denne kommandoen må du skrive inn passord 2 ganger. Fordi passordfraser er irriterende, skal vi fjerne det.

  2. Fjern passordfrase fra privat nøkkel:

    openssl rsa -in example.com.key -out example.com.key
    
  3. Generer forespørsel om sertifikatsignering (CSR):

    openssl req -new -sha256 -key example.com.key -out cert-request.csr 
    

    We are creating single-domain certificate so we need to set common-name field equal to example.com domain

  4. Opprett sertifikat:

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. Sorter ut sertifikat og privat nøkkel:

    mkdir -p /etc/ssl/testing/private && mkdir /etc/ssl/testing/certs
    mv example.com.key /etc/ssl/testing/private && mv example.com.crt /etc/ssl/testing/certs
    
  6. Lag nginx virtuelle vertskataloger

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. Så løp nano /etc/nginx/nginx.confog finn et direktiv include /etc/nginx/conf.d/*.conf;. Legg til include /etc/nginx/sites-enabled/*;Lagre ( CTRL+O ) under dette direktivet og avslutt ( CTRL+X ).

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. Lag en fil kalt example.com.confinne i /etc/nginx/sites-availablekatalogen med denne kommandoen nano /etc/nginx/sites-available/example.com.confog kopier/lim inn følgende kode:

    server {
        listen 80;
        listen [::]:80;
        server_name example.com;
        return 301 https://$host$request_uri;
    }
    server {
        listen 443 ssl http2;
        listen [::]:443 ssl http2;
        server_name example.com;
        root /var/www/html;
        index index.nginx-debian.html;
    
        ssl_certificate /etc/ssl/testing/certs/example.com.crt;
        ssl_certificate_key /etc/ssl/testing/private/example.com.key;
    
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
        ssl_prefer_server_ciphers on;
    }
    

    Gratulerer, du har nå HTTP/2- aktivert webserver. Å legge til http2parameter til listendirektivet inne i virtuell HTTPS-vert vil gi deg HTTP/2- støtte.

  9. Lag en symbolsk lenke for /etc/nginx/sites-available/example.com.confmed denne kommandoen:

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. Test konfigurasjonssyntaks

    nginx -t
    
  11. Start Nginx på nytt for å bruke endringene dine:

    systemctl restart nginx
    
  12. Legg til example.comdomene i /etc/hostsfilen

    echo '127.0.0.1    example.com' >> /etc/hosts
    

For å teste din virtuelle vert trenger vi tekstbasert nettleser - elinks.

  1. For å installere elinks bruk følgende kommando:

    apt install elinks
    
  2. For å teste den example.comvirtuelle vertskjøringen din:

    elinks https://example.com
    
  3. For å gå ut av elinks-nettleseren, trykk på q på tastaturet og deretter Enter .

Test HTTP/2

For å se hvilke protokoller serveren annonserer er den enkleste måten å bruke opensslverktøysettet.

    openssl s_client -connect example.com:443 -nextprotoneg ''

I utdataene til denne kommandoen bør du se noe slikt:

    CONNECTED(00000003)
    Protocols advertised by server: h2, http/1.1      

For å se HTTP/2 i aksjon kan du bruke nettleserutviklerverktøy. HTTP/2- protokollen indikeres enten med h2eller HTTP/2.0identifikatorer. Åpne nettverkspanelet i dev-tools og oppdater siden din.

Konklusjon

Nå bør du være klar over hvor "enkelt" det er å aktivere HTTP/2 i Nginx-konfigurasjon, men det er ikke hele delen av helhetsbildet. Først bør du tenke på å aktivere TLS/SSL på serveren din med sterke chiffersuiter og sørge for at du ikke bruker svartelistede chiffer . Først etter at du har aktivert sterk TLS/SSL på serveren din, kan du begynne å tenke på å aktivere HTTP/2 .

Legg igjen en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Kunstig intelligens er ikke i fremtiden, det er her akkurat i nåtiden I denne bloggen Les hvordan kunstig intelligens-applikasjoner har påvirket ulike sektorer.

DDOS-angrep: en kort oversikt

DDOS-angrep: en kort oversikt

Er du også et offer for DDOS-angrep og forvirret over forebyggingsmetodene? Les denne artikkelen for å løse spørsmålene dine.

Har du noen gang lurt på hvordan hackere tjener penger?

Har du noen gang lurt på hvordan hackere tjener penger?

Du har kanskje hørt at hackere tjener mye penger, men har du noen gang lurt på hvordan tjener de den slags penger? la oss diskutere.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Revolusjonerende oppfinnelser fra Google som vil gjøre livet ditt enkelt.

Vil du se revolusjonerende oppfinnelser fra Google og hvordan disse oppfinnelsene forandret livet til alle mennesker i dag? Les deretter til bloggen for å se oppfinnelser fra Google.

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Fredag ​​Essential: Hva skjedde med AI-drevne biler?

Konseptet med selvkjørende biler som skal ut på veiene ved hjelp av kunstig intelligens er en drøm vi har hatt en stund nå. Men til tross for flere løfter, er de ingen steder å se. Les denne bloggen for å lære mer...

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Teknologisk singularitet: en fjern fremtid for menneskelig sivilisasjon?

Ettersom vitenskapen utvikler seg raskt og tar over mye av innsatsen vår, øker også risikoen for å utsette oss for en uforklarlig singularitet. Les hva singularitet kan bety for oss.

Funksjonaliteter til Big Data Reference Architecture Layers

Funksjonaliteter til Big Data Reference Architecture Layers

Les bloggen for å kjenne ulike lag i Big Data Architecture og deres funksjoner på den enkleste måten.

Evolusjon av datalagring – infografikk

Evolusjon av datalagring – infografikk

Lagringsmetodene for dataene har vært i utvikling kan være siden fødselen av dataene. Denne bloggen dekker utviklingen av datalagring på grunnlag av en infografikk.

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

6 fantastiske fordeler ved å ha smarte hjemmeenheter i livene våre

I denne digitaldrevne verden har smarthusenheter blitt en avgjørende del av livet. Her er noen fantastiske fordeler med smarthusenheter om hvordan de gjør livet vårt verdt å leve og enklere.

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

macOS Catalina 10.15.4 tilleggsoppdatering forårsaker flere problemer enn å løse

Nylig lanserte Apple macOS Catalina 10.15.4 en tilleggsoppdatering for å fikse problemer, men det ser ut til at oppdateringen forårsaker flere problemer som fører til muring av mac-maskiner. Les denne artikkelen for å lære mer