Activați HTTP / 2 în Nginx pe Ubuntu 16.04

HTTP / 2 este noua versiune a protocolului HTTP / 1.1 acum învechit, care a fost standardizat înapoi în 1999. O mulțime s-au schimbat pe web de atunci. Aplicațiile noastre sunt mai complexe decât au fost înapoi, așa că, pentru a face față, a fost necesară o schimbare a protocolului de transport de bază. Cel mai important lucru despre HTTP / 2 este că va face pagina ta web mai rapidă pentru utilizatorii finali.

Pe scurt HTTP / 2 adaugă 5 caracteristici cheie:

  • Conexiune unică, persistentă
  • multiplexare
  • Compresia antetului
  • Prioritizarea resurselor
  • Securează stratul de transport (valabil doar pentru browsere)

Explicarea tuturor acestor funcții nu intră în sfera de aplicare a acestui tutorial, dar dacă doriți să săpați mai adânc în acest subiect, vă pot recomanda extras din cartea Networking Browser de înaltă performanță - extras HTTP / 2 .

În acest ghid vom instala cea mai recentă versiune stabilă a Nginx pe Ubuntu 16.04 (Xenial), vom genera certificatul SSL autofirmat, vom activa protocolul HTTP / 2 în Nginx și vom instala browserul bazat pe text elinkspentru a acționa ca client HTTP.

Instalați Nginx

Pentru a instala cea mai recentă versiune stabilă a Nginx, trebuie să emitem câteva comenzi:

  1. Trebuie să descărcăm cheia PGP publică Nginx folosită pentru semnarea pachetelor și a depozitelor și să o adăugăm în cheia folosită de managerul de pachete pentru a verifica autenticitatea pachetelor descărcate din depozit.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. Ștergeți cheia PGP din sistemul de fișiere:

    rm nginx_signing.key
    
  3. Adăugați un nou depozit

    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. Actualizați lista de pachete și instalați Nginx:

    apt update && apt install nginx -y
    
  5. Pentru a verifica versiunea Nginx putem folosi următoarele:

    nginx -v 
    # nginx version: nginx/1.10.1
    

    Dacă totul merge bine, ar trebui să vedeți un model ca 1.10.xla ieșire atunci când executați nginx -vcomanda.

Certificat auto-semnat și HTTP / 2

Deși specificațiile HTTP / 2 nu obligă browserele să implementeze HTTP / 2 peste TLS, toate browserele majore au decis să implementeze doar HTTP / 2 prin TLS, dar nu orice versiune TLS, doar TLS 1.2 sau o versiune ulterioară.

Vom crea certificate auto-semnate pentru example.comdomeniul fictiv , pentru producție aveți nevoie de un domeniu valid și să folosiți CA de încredere.

  1. Generați cheie privată:

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

    După executarea acestei comenzi, va trebui să introduceți fraza de 2 ori. Deoarece frazele de pasare sunt enervante, vom elimina-o.

  2. Eliminați fraza de acces din cheia privată:

    openssl rsa -in example.com.key -out example.com.key
    
  3. Generați cerere de semnare a certificatului (CSR):

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

    Creăm un certificat cu un singur domeniu, așa că trebuie să setăm un câmp cu nume comun egal cu example.comdomeniu

  4. Creare certificat:

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. Sortează certificatul și cheia privată:

    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. Creează directoare de gazdă nginx virtuale

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. Apoi, executați nano /etc/nginx/nginx.confși găsiți o directivă include /etc/nginx/conf.d/*.conf;. Sub această directivă adăugați include /etc/nginx/sites-enabled/*;Salvare ( CTRL + O ) și apoi renunțați ( CTRL + X ).

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. Creați un fișier numit example.com.confîn interiorul /etc/nginx/sites-availabledirectorului cu această comandă nano /etc/nginx/sites-available/example.com.confși copiați / inserați următorul cod:

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

    Felicitări, acum aveți un server web HTTP / 2 activat. Adăugarea http2parametrului la listendirectiva din interiorul gazdei virtuale HTTPS vă va oferi suport HTTP / 2 .

  9. Creați un link simbolic pentru /etc/nginx/sites-available/example.com.confaceastă comandă:

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. Sintaxa de configurare a testului

    nginx -t
    
  11. Reporniți Nginx pentru a aplica modificările:

    systemctl restart nginx
    
  12. Adăugați example.comdomeniu în /etc/hostsfișier

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

Pentru a vă testa gazda virtuală avem nevoie de un browser bazat pe text - elink.

  1. Pentru a instala elink-uri, utilizați următoarea comandă:

    apt install elinks
    
  2. Pentru a testa example.comrularea gazdelor tale virtuale:

    elinks https://example.com
    
  3. Pentru a ieși din browserul elinks, apăsați q pe tastatura dvs. și apoi Enter .

Testare HTTP / 2

Pentru a vedea ce protocoale serverul anunță cel mai simplu este să folosiți opensslsetul de instrumente.

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

În ieșirea acestei comenzi, ar trebui să vedeți așa ceva:

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

Pentru a vedea HTTP / 2 în acțiune, puteți utiliza instrumente pentru dezvoltatori de browser. HTTP / 2 protocol este indicat , fie cu h2sau HTTP/2.0identificatori. Deschideți panoul de rețea în instrumente dev și îmbunătățiți pagina.

Concluzie

Acum ar trebui să fiți conștienți de cât de ușor este să activați HTTP / 2 în configurația Nginx, dar aceasta nu este întreaga parte a imaginii generale. În primul rând, ar trebui să vă gândiți la activarea TLS / SSL pe serverul dvs. cu apartamente puternice de cifrare și asigurați-vă că nu utilizați cifrele negre . Numai după ce ați activat TLS / SSL puternic pe serverul dvs., puteți începe să vă gândiți la activarea HTTP / 2 .

Lasă un comentariu

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

O perspectivă asupra a 26 de tehnici de analiză a datelor mari: partea 1

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Funcționalitățile straturilor arhitecturii de referință pentru Big Data

Citiți blogul pentru a cunoaște diferitele straturi din Arhitectura Big Data și funcționalitățile acestora în cel mai simplu mod.

6 lucruri extrem de nebunești despre Nintendo Switch

6 lucruri extrem de nebunești despre Nintendo Switch

Mulți dintre voi cunoașteți Switch care va fi lansat în martie 2017 și noile sale funcții. Pentru cei care nu știu, am pregătit o listă de funcții care fac din „Switch” un „gadget obligatoriu”.

Promisiuni tehnologice care sunt încă nelivrate

Promisiuni tehnologice care sunt încă nelivrate

Aștepți ca giganții tehnologiei să-și îndeplinească promisiunile? vezi ce a ramas nelivrat.

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Cum poate AI să ducă automatizarea proceselor la următorul nivel?

Citiți asta pentru a afla cum devine populară inteligența artificială în rândul companiilor la scară mică și cum crește probabilitățile de a le face să crească și de a le oferi concurenților avantaje.

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Singularitatea tehnologică: un viitor îndepărtat al civilizației umane?

Pe măsură ce Știința Evoluează într-un ritm rapid, preluând multe dintre eforturile noastre, crește și riscurile de a ne supune unei Singularități inexplicabile. Citiți, ce ar putea însemna singularitatea pentru noi.

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA: Cât timp poate rămâne o tehnică viabilă pentru distincția uman-AI?

CAPTCHA a devenit destul de dificil de rezolvat pentru utilizatori în ultimii ani. Va fi capabil să rămână eficient în detectarea spam-ului și a botului în viitor?

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Telemedicină și îngrijire medicală la distanță: viitorul este aici

Ce este telemedicina, îngrijirea medicală la distanță și impactul acesteia asupra generației viitoare? Este un loc bun sau nu în situația de pandemie? Citiți blogul pentru a găsi o vedere!

Te-ai întrebat vreodată cum câștigă hackerii bani?

Te-ai întrebat vreodată cum câștigă hackerii bani?

Poate ați auzit că hackerii câștigă mulți bani, dar v-ați întrebat vreodată cum câștigă acești bani? sa discutam.

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Actualizarea suplimentului macOS Catalina 10.15.4 cauzează mai multe probleme decât rezolvă

Recent, Apple a lansat macOS Catalina 10.15.4 o actualizare suplimentară pentru a remedia problemele, dar se pare că actualizarea provoacă mai multe probleme care duc la blocarea mașinilor Mac. Citiți acest articol pentru a afla mai multe