Aktivera HTTP/2 i Nginx på Ubuntu 16.04

HTTP/2 är den nya versionen av det nu föråldrade HTTP/1.1-protokollet som standardiserades redan 1999. Mycket har förändrats på webben sedan dess. Våra applikationer är mer komplexa än de var tidigare än, så för att klara det var förändring i det underliggande transportprotokollet nödvändigt. Det viktigaste med HTTP/2 är att det kommer att göra din webbsida snabbare för slutanvändarna.

I korthet lägger HTTP/2 till 5 nyckelfunktioner:

  • Enkel, ihållande anslutning
  • Multiplexering
  • Header komprimering
  • Resursprioritering
  • Säkrar transportlager (endast giltigt för webbläsare)

Att förklara alla dessa funktioner ligger utanför omfattningen av den här handledningen, men om du vill gräva djupare i det här ämnet kan jag rekommendera ett utdrag från boken High Performance Browser Networking - HTTP/2-utdrag .

I den här guiden kommer vi att installera den senaste stabila versionen av Nginx på Ubuntu 16.04 (Xenial), generera självsignerat SSL-certifikat, aktivera HTTP/2- protokoll i Nginx och installera en textbaserad webbläsare för elinksatt fungera som HTTP-klient.

Installera Nginx

För att installera den senaste stabila versionen av Nginx måste vi utfärda en hel del kommandon:

  1. Vi måste ladda ner Nginx offentliga PGP-nyckel som används för att signera paket och arkiv och lägga till den i nyckelringen som används av pakethanteraren för att verifiera äktheten av paket som laddats ner från arkivet.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. Ta bort PGP-nyckeln från filsystemet:

    rm nginx_signing.key
    
  3. Lägg till nytt arkiv

    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. Uppdatera din paketlista och installera Nginx:

    apt update && apt install nginx -y
    
  5. För att verifiera Nginx-versionen kan vi använda följande:

    nginx -v 
    # nginx version: nginx/1.10.1
    

    Om allt går bra bör du se mönster som 1.10.xi utdata när du kör nginx -vkommandot.

Självsignerat certifikat och 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 kommer att skapa självsignerade certifikat för fiktiva example.comdomäner, för produktion behöver du en giltig domän och använda betrodd CA.

  1. Generera privat nyckel:

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

    Efter att ha kört det här kommandot måste du ange lösenordsfrasen 2 gånger. Eftersom lösenordsfraser är irriterande kommer vi att ta bort dem.

  2. Ta bort lösenfras från privat nyckel:

    openssl rsa -in example.com.key -out example.com.key
    
  3. Generera certifikatsigneringsbegäran (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. Skapa certifikat:

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. Sortera ut certifikat och privat nyckel:

    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. Gör nginx virtuella värdkataloger

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. Spring sedan nano /etc/nginx/nginx.confoch hitta ett direktiv include /etc/nginx/conf.d/*.conf;. Lägg till include /etc/nginx/sites-enabled/*;Spara ( CTRL+O ) under detta direktiv och avsluta sedan ( CTRL+X ).

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. Skapa en fil som heter example.com.confinuti /etc/nginx/sites-availablekatalogen med detta kommando nano /etc/nginx/sites-available/example.com.confoch kopiera/klistra in följande kod:

    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;
    }
    

    Grattis, du har nu HTTP/2- aktiverad webbserver. Om du lägger till en http2parameter till listendirektivet i den virtuella HTTPS-värden får du HTTP/2- stöd.

  9. Skapa en symbolisk länk för /etc/nginx/sites-available/example.com.confmed detta kommando:

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. Testa konfigurationssyntax

    nginx -t
    
  11. Starta om Nginx för att tillämpa dina ändringar:

    systemctl restart nginx
    
  12. Lägg till example.comdomän i /etc/hostsfilen

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

För att testa din virtuella värd behöver vi en textbaserad webbläsare - elinks.

  1. Använd följande kommando för att installera elinks:

    apt install elinks
    
  2. Så här testar du din example.comvirtuella värdkörning:

    elinks https://example.com
    
  3. För att avsluta elinks webbläsare tryck på q på ditt tangentbord och sedan på Enter .

Testa HTTP/2

För att se vilka protokoll servern annonserar är det enklaste sättet att använda opensslverktygslåda.

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

I utgången av detta kommando bör du se något så här:

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

För att se HTTP/2 i aktion kan du använda webbläsarutvecklingsverktyg. HTTP/2- protokollet indikeras antingen med h2eller HTTP/2.0identifierare. Öppna nätverkspanelen i dev-tools och uppdatera din sida.

Slutsats

Nu bör du vara medveten om hur "lätt" det är att aktivera HTTP/2 i Nginx-konfiguration, men det är inte hela delen av den övergripande bilden. Först bör du tänka på att aktivera TLS/SSL på din server med starka chiffersviter och se till att du inte använder svartlistade chiffer . Först efter att ha aktiverat stark TLS/SSL på din server kan du börja fundera på att aktivera HTTP/2 .

Lämna en kommentar

The Rise of Machines: Real World Applications of AI

The Rise of Machines: Real World Applications of AI

Artificiell intelligens är inte i framtiden, det är här i nuet I den här bloggen Läs hur Artificiell intelligens-applikationer har påverkat olika sektorer.

DDOS-attacker: En kort översikt

DDOS-attacker: En kort översikt

Är du också ett offer för DDOS-attacker och förvirrad över de förebyggande metoderna? Läs den här artikeln för att lösa dina frågor.

Har du någonsin undrat hur hackare tjänar pengar?

Har du någonsin undrat hur hackare tjänar pengar?

Du kanske har hört att hackare tjänar mycket pengar, men har du någonsin undrat hur de tjänar den typen av pengar? låt oss diskutera.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Revolutionerande uppfinningar från Google som gör ditt liv lätt.

Vill du se revolutionerande uppfinningar av Google och hur dessa uppfinningar förändrade livet för varje människa idag? Läs sedan till bloggen för att se uppfinningar av Google.

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Fredag ​​Essential: Vad hände med AI-drivna bilar?

Konceptet med att självkörande bilar ska ut på vägarna med hjälp av artificiell intelligens är en dröm vi har ett tag nu. Men trots flera löften finns de ingenstans att se. Läs den här bloggen för att lära dig mer...

Technological Singularity: A Distant Future of Human Civilization?

Technological Singularity: A Distant Future of Human Civilization?

När vetenskapen utvecklas i snabb takt och tar över en hel del av våra ansträngningar, ökar också riskerna för att utsätta oss för en oförklarlig singularitet. Läs, vad singularitet kan betyda för oss.

Funktioner för Big Data Reference Architecture Layers

Funktioner för Big Data Reference Architecture Layers

Läs bloggen för att känna till olika lager i Big Data Architecture och deras funktionaliteter på enklaste sätt.

Utveckling av datalagring – Infographic

Utveckling av datalagring – Infographic

Lagringsmetoderna för data har utvecklats kan vara sedan födelsen av data. Den här bloggen tar upp utvecklingen av datalagring på basis av en infografik.

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

6 fantastiska fördelar med att ha smarta hemenheter i våra liv

I denna digitala värld har smarta hemenheter blivit en avgörande del av livet. Här är några fantastiska fördelar med smarta hemenheter om hur de gör vårt liv värt att leva och enklare.

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

macOS Catalina 10.15.4 tilläggsuppdatering orsakar fler problem än att lösa

Nyligen släppte Apple macOS Catalina 10.15.4, en tilläggsuppdatering för att åtgärda problem, men det verkar som om uppdateringen orsakar fler problem som leder till att mac-datorer blir murade. Läs den här artikeln för att lära dig mer