Włącz HTTP / 2 w Nginx na Ubuntu 16.04

HTTP / 2 to nowa wersja przestarzałego protokołu HTTP / 1.1, który został znormalizowany w 1999 roku. Od tego czasu wiele się zmieniło w Internecie. Nasze aplikacje są bardziej złożone niż były w przeszłości, więc aby sobie z tym poradzić, konieczna była zmiana podstawowego protokołu transportowego. Najważniejszą rzeczą w HTTP / 2 jest to, że przyspieszy twoją stronę dla użytkowników końcowych.

W skrócie HTTP / 2 dodaje 5 kluczowych funkcji:

  • Pojedyncze, trwałe połączenie
  • Multipleksowanie
  • Kompresja nagłówka
  • Priorytetyzacja zasobów
  • Zabezpiecza warstwę transportową (dotyczy tylko przeglądarek)

Wyjaśnienie wszystkich tych funkcji nie wchodzi w zakres tego samouczka, ale jeśli chcesz zagłębić się w ten temat, mogę polecić fragment książki High Performance Browser Networking - fragment HTTP / 2 .

W tym przewodniku zamierzamy zainstalować najnowszą stabilną wersję Nginx na Ubuntu 16.04 (Xenial), wygenerować samopodpisany certyfikat SSL, włączyć protokół HTTP / 2 w Nginx i zainstalować przeglądarkę tekstową, która elinksbędzie działać jako klient HTTP.

Zainstaluj Nginx

Aby zainstalować najnowszą stabilną wersję Nginx, musimy wydać sporo poleceń:

  1. Musimy pobrać publiczny klucz PGP Nginx używany do podpisywania pakietów i repozytoriów i dodać go do kluczy używanych przez menedżera pakietów w celu zweryfikowania autentyczności pakietów pobranych z repozytorium.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. Usuń klucz PGP z systemu plików:

    rm nginx_signing.key
    
  3. Dodaj nowe repozytorium

    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. Zaktualizuj listę pakietów i zainstaluj Nginx:

    apt update && apt install nginx -y
    
  5. Aby zweryfikować wersję Nginx, możemy użyć:

    nginx -v 
    # nginx version: nginx/1.10.1
    

    Jeśli wszystko pójdzie dobrze, powinieneś zobaczyć wzorzec jak 1.10.xna wyjściu podczas uruchamiania nginx -vpolecenia.

Certyfikat z podpisem własnym i HTTP / 2

Chociaż specyfikacja HTTP / 2 nie wymusza na przeglądarkach implementacji HTTP / 2 przez TLS, wszystkie główne przeglądarki zdecydowały się na implementację HTTP / 2 przez TLS, ale nie na żadnej wersji TLS, tylko TLS 1.2 lub wyższej.

Stworzymy samopodpisane certyfikaty dla fikcyjnej example.comdomeny, do produkcji potrzebujesz ważnej domeny i korzystaj z zaufanego urzędu certyfikacji.

  1. Wygeneruj klucz prywatny:

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

    Po uruchomieniu tego polecenia musisz wprowadzić hasło 2 razy. Ponieważ hasła są denerwujące, zamierzamy je usunąć.

  2. Usuń hasło z klucza prywatnego:

    openssl rsa -in example.com.key -out example.com.key
    
  3. Wygeneruj żądanie podpisania certyfikatu (CSR):

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

    Tworzymy certyfikat jednodomenowy, dlatego musimy ustawić pole nazwy zwykłej równe example.comdomenie

  4. Utwórz certyfikat:

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. Posortuj certyfikat i klucz prywatny:

    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. Utwórz katalogi hostów wirtualnych nginx

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. Następnie uruchom nano /etc/nginx/nginx.confi znajdź dyrektywę include /etc/nginx/conf.d/*.conf;. Poniżej tej dyrektywy dodaj include /etc/nginx/sites-enabled/*;Zapisz ( CTRL + O ), a następnie zamknij ( CTRL + X ).

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. Za pomocą tego polecenia utwórz plik o nazwie example.com.confwewnątrz /etc/nginx/sites-availablekatalogu nano /etc/nginx/sites-available/example.com.confi skopiuj / wklej następujący 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;
    }
    

    Gratulacje, masz teraz serwer WWW z obsługą HTTP / 2 . Dodanie http2parametru do listendyrektywy w wirtualnym hoście HTTPS zapewni obsługę HTTP / 2 .

  9. Utwórz symboliczne łącze za /etc/nginx/sites-available/example.com.confpomocą tego polecenia:

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. Testowa składnia konfiguracji

    nginx -t
    
  11. Uruchom ponownie Nginx, aby zastosować zmiany:

    systemctl restart nginx
    
  12. Dodaj example.comdomenę do /etc/hostspliku

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

Do przetestowania twojego wirtualnego hosta potrzebujemy przeglądarki tekstowej - elinks.

  1. Aby zainstalować elinks, użyj następującego polecenia:

    apt install elinks
    
  2. Aby przetestować działanie example.comwirtualnego hosta:

    elinks https://example.com
    
  3. Aby wyjść z przeglądarki elinks, naciśnij q na klawiaturze, a następnie Enter .

Przetestuj HTTP / 2

Aby zobaczyć, jakie protokoły reklamuje serwer, najłatwiejszym sposobem jest użycie opensslzestawu narzędzi.

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

W wyniku tego polecenia powinieneś zobaczyć coś takiego:

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

Aby zobaczyć HTTP / 2 w akcji, możesz użyć narzędzi programistycznych przeglądarki. Protokół HTTP / 2 jest oznaczony za pomocą h2lub HTTP/2.0identyfikatorów. Otwórz panel sieci w narzędziach programistycznych i odśwież stronę.

Wniosek

Teraz powinieneś zdawać sobie sprawę z tego, jak „łatwe” jest włączenie HTTP / 2 w konfiguracji Nginx, ale to nie jest cała część ogólnego obrazu. Najpierw zastanów się nad włączeniem TLS / SSL na serwerze z silnymi pakietami szyfrów i upewnij się, że nie używasz szyfrów z czarnej listy . Dopiero po włączeniu silnego TLS / SSL na serwerze możesz zacząć myśleć o włączeniu HTTP / 2 .



Leave a Comment

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.