Активирайте HTTP/2 в Nginx на Ubuntu 16.04

HTTP/2 е новата версия на вече остарял HTTP/1.1 протокол, който беше стандартизиран още през 1999 г. Оттогава много се промениха в мрежата. Нашите приложения са по-сложни, отколкото преди, така че, за да се справим с това, беше необходима промяна в основния транспортен протокол. Най-важното нещо за HTTP/2 е, че той ще направи вашата уеб страница по-бърза за крайните потребители.

Накратко HTTP/2 добавя 5 ключови функции:

  • Единична, постоянна връзка
  • Мултиплексиране
  • Компресиране на заглавието
  • Приоритизиране на ресурсите
  • Защитава транспортния слой (валиден само за браузъри)

Обясняването на всички тези функции е извън обхвата на този урок, но ако искате да се задълбочите в тази тема, мога да препоръчам откъс от книгата за високопроизводителни мрежови браузъри - HTTP/2 откъс .

В това ръководство ще инсталираме най-новата стабилна версия на Nginx на Ubuntu 16.04 (Xenial), ще генерираме самоподписан SSL сертификат, ще активираме HTTP/2 протокол в Nginx и ще инсталираме текстов базиран браузър, който elinksда действа като HTTP клиент.

Инсталирайте Nginx

За да инсталираме най-новата стабилна версия на Nginx, трябва да издадем доста команди:

  1. Трябва да изтеглим публичен PGP ключ на Nginx, използван за подписване на пакети и хранилища, и да го добавим в ключодържателя, използван от мениджъра на пакети, за да проверим автентичността на пакетите, изтеглени от хранилището.

    wget https://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key
    
  2. Изтрийте PGP ключа от файловата система:

    rm nginx_signing.key
    
  3. Добавете ново хранилище

    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. Актуализирайте списъка си с пакети и инсталирайте Nginx:

    apt update && apt install nginx -y
    
  5. За да проверим версията на Nginx, можем да използваме следното:

    nginx -v 
    # nginx version: nginx/1.10.1
    

    Ако всичко върви добре, трябва да видите модел като 1.10.xв изхода, когато изпълнявате nginx -vкоманда.

Самоподписан сертификат и 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.

Ще създадем самоподписани сертификати за измислен example.comдомейн, за производство ви трябва валиден домейн и да използвате доверен CA.

  1. Генериране на частен ключ:

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

    След като изпълните тази команда, ще трябва да въведете парола 2 пъти. Тъй като паролите са досадни, ще го премахнем.

  2. Премахване на парола от частния ключ:

    openssl rsa -in example.com.key -out example.com.key
    
  3. Генериране на заявка за подписване на сертификат (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. Създаване на сертификат:

    openssl x509 -req -days 365 -in cert-request.csr -signkey example.com.key -out example.com.crt
    
  5. Подредете сертификат и частен ключ:

    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. Направете nginx виртуални хост директории

    mkdir /etc/nginx/sites-available && mkdir /etc/nginx/sites-enabled
    
  7. След това стартирайте nano /etc/nginx/nginx.confи намерете директива include /etc/nginx/conf.d/*.conf;. Под тази директива добавете include /etc/nginx/sites-enabled/*;Save ( CTRL+O ) и след това излезте ( CTRL+X ).

    ##
    # Virtual Hosts
    ##
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
    
  8. Създайте файл, наречен example.com.confвътре в /etc/nginx/sites-availableдиректорията с тази команда nano /etc/nginx/sites-available/example.com.confи копирайте/поставете следния код:

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

    Поздравления, вече имате HTTP/2 активиран уеб сървър. Добавянето на http2параметър към listenдирективата във виртуалния хост на HTTPS ще ви даде HTTP/2 поддръжка.

  9. Създайте символна връзка за /etc/nginx/sites-available/example.com.confс тази команда:

    ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled
    
  10. Тествайте синтаксис на конфигурацията

    nginx -t
    
  11. Рестартирайте Nginx, за да приложите промените си:

    systemctl restart nginx
    
  12. Добавете example.comдомейн към /etc/hostsфайла

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

За да тестваме вашия виртуален хост се нуждаем от текстов браузър - elinks.

  1. За да инсталирате elinks, използвайте следната команда:

    apt install elinks
    
  2. За да тествате вашия example.comвиртуален хост:

    elinks https://example.com
    
  3. За да излезете от браузъра elinks, натиснете q на клавиатурата си и след това Enter .

Тествайте HTTP/2

За да видите какви протоколи сървърът рекламира най-лесният начин е да използвате opensslинструментариум.

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

В изхода на тази команда трябва да видите нещо подобно:

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

За да видите HTTP/2 в действие, можете да използвате инструменти за разработчици на браузъра. HTTP/2 протоколът се обозначава с h2или HTTP/2.0идентификатори. Отворете мрежовия панел в dev-tools и опреснете страницата си.

Заключение

Сега трябва да сте наясно колко "лесно" е да активирате HTTP/2 в конфигурацията на Nginx, но това не е цялата част от цялостната картина. Първо трябва да помислите за активиране на TLS/SSL на вашия сървър със силни пакети за шифроване и се уверете, че не използвате шифри от черния списък . Само след като активирате силен TLS/SSL на вашия сървър, можете да започнете да мислите за активиране на HTTP/2 .

Оставете коментар

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

Изкуственият интелект не е в бъдещето, тук е точно в настоящето. В този блог Прочетете как приложенията за изкуствен интелект са повлияли на различни сектори.

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

Може би сте чували, че хакерите печелят много пари, но чудили ли сте се някога как печелят такива пари? нека обсъдим.

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Тъй като науката се развива с бързи темпове, поемайки много от нашите усилия, рискът да се подложим на необяснима сингулярност също нараства. Прочетете какво може да означава сингулярността за нас.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече