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 .


Leave a Comment

Hvordan sette opp en Tekkit Classic Server på Ubuntu 16.10

Hvordan sette opp en Tekkit Classic Server på Ubuntu 16.10

Bruker du et annet system? Hva er Tekkit Classic? Tekkit Classic er en modpack for spillet alle kjenner og elsker; Minecraft. Den inneholder noe av ver

Opprette en Jekyll-blogg på Ubuntu 16.04

Opprette en Jekyll-blogg på Ubuntu 16.04

Bruker du et annet system? Jekyll er et flott alternativ til WordPress for blogging eller deling av innhold. Det krever ingen databaser, og det er veldig enkelt, jeg

Hvordan installere og konfigurere PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

Hvordan installere og konfigurere PHP 7.0 eller PHP 7.1 på Ubuntu 16.04

PHP og relaterte pakker er de mest brukte komponentene når du distribuerer en webserver. I denne artikkelen vil vi lære hvordan du setter opp PHP 7.0 eller PHP 7.1 o

Slik installerer du Squid Proxy på CentOS

Slik installerer du Squid Proxy på CentOS

Squid er et populært, gratis Linux-program som lar deg lage en webproxy for videresending. I denne veiledningen vil du se hvordan du installerer Squid på CentOS for å gjøre deg om

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Slik installerer du Lighttpd (LLMP Stack) på CentOS 6

Introduksjon Lighttpd er en apachegaffel som har som mål å være mye mindre ressurskrevende. Den er lett, derav navnet, og er ganske enkel å bruke. Installer

Sette opp en Yii-applikasjon på Ubuntu 14.04

Sette opp en Yii-applikasjon på Ubuntu 14.04

Yii er et PHP-rammeverk som lar deg utvikle applikasjoner raskere og enklere. Det er enkelt å installere Yii på Ubuntu, som du vil lære nøyaktig

Sett opp din egen DNS-server på Debian/Ubuntu

Sett opp din egen DNS-server på Debian/Ubuntu

Denne opplæringen forklarer hvordan du setter opp en DNS-server ved å bruke Bind9 på Debian eller Ubuntu. Bytt ut ditt-domenenavn.com gjennom hele artikkelen. På th

Konfigurering av statisk nettverk og IPv6 på CentOS 7

Konfigurering av statisk nettverk og IPv6 på CentOS 7

VULTR har nylig gjort endringer på sin side, og alt skal nå fungere bra ut av boksen med NetworkManager aktivert. Skulle du ønske å deaktivere

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Endring av Icinga2 for å bruke hoved-/klientmodell på CentOS 6 eller CentOS 7

Icinga2 er et kraftig overvåkingssystem, og når det brukes i en master-klient-modell, kan det erstatte behovet for NRPE-baserte overvåkingskontroller. Mester-klienten

Sett opp Red5 Media Server på Ubuntu 16.04

Sett opp Red5 Media Server på Ubuntu 16.04

Bruker du et annet system? Red5 er en åpen kildekode medieserver implementert i Java som lar deg kjøre Flash flerbrukerapplikasjoner som live streamin

Kompiler og installer Nginx med PageSpeed-modulen på Debian 8

Kompiler og installer Nginx med PageSpeed-modulen på Debian 8

I denne artikkelen vil vi se hvordan du kompilerer og installerer Nginx mainline fra de offisielle kildene til Nginx med PageSpeed-modulen, som lar deg t

Hvordan installere Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Hvordan installere Apache Cassandra 3.11.x på Ubuntu 16.04 LTS

Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Slik installerer du Apache Cassandra 3.11.x på CentOS 7

Bruker du et annet system? Apache Cassandra er et gratis og åpen kildekode NoSQL-databasebehandlingssystem som er designet for å gi skalerbarhet, høy

Hvordan installere Vanilla Forum på Ubuntu 16.04

Hvordan installere Vanilla Forum på Ubuntu 16.04

Bruker du et annet system? Vanilla forum er en åpen kildekode-forumapplikasjon skrevet i PHP. Det er en fullt tilpassbar, enkel å bruke og støtter ekstern

Hvordan installere Kanboard på Ubuntu 18.04 LTS

Hvordan installere Kanboard på Ubuntu 18.04 LTS

Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere

Hvordan installere Kanboard på Debian 9

Hvordan installere Kanboard på Debian 9

Bruker du et annet system? Introduksjon Kanboard er et gratis og åpen kildekodeprogram for prosjektledelse som er designet for å forenkle og visualisere

Hvordan installere Gitea på Debian 9

Hvordan installere Gitea på Debian 9

Bruker du et annet system? Gitea er et alternativt åpen kildekode, selvdrevet versjonskontrollsystem drevet av Git. Gitea er skrevet på Golang og er

Hvordan installere Gitea på Ubuntu 18.04

Hvordan installere Gitea på Ubuntu 18.04

Bruker du et annet system? Gitea er et alternativt, selvdrevet versjonskontrollsystem med åpen kildekode drevet av git. Gitea er skrevet på Golang og er

Hvordan installere Thelia 2.3 på Debian 9

Hvordan installere Thelia 2.3 på Debian 9

Bruker du et annet system? Thelia er et åpen kildekodeverktøy for å lage e-business-nettsteder og administrere nettinnhold skrevet i PHP. Thelia kildekode i

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Hvordan installere MODX Revolution på en Ubuntu 16.04 LAMP VPS

Bruker du et annet system? MODX Revolution er et raskt, fleksibelt, skalerbart, gratis og åpen kildekode, enterprise-grade Content Management System (CMS) skrevet i

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.

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.

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.

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