Как да инсталирате Nginx с поддръжка на HTTP/2 на Ubuntu (Пълно ръководство)
Nginx е един от най-широко разпространените уеб сървъри в света, известен със своята изключителна производителност, нисък разход на памет и способност да обработва хиляди едновременни връзки. Когато се комбинира с HTTP/2, Nginx се превръща в още по-мощна платформа — позволяваща мултиплексирани заявки, компресия на заглавки, server push и драматично намалени времена за зареждане на страниците.
Това всеобхватно ръководство ви преведе през всяка стъпка, необходима за инсталиране на Nginx с пълна поддръжка на HTTP/2 на Ubuntu 20.04 и Ubuntu 22.04 LTS, от първоначалната настройка до конфигурирането на SSL, оптимизирането на блокове сървър и живо проверяване.
> За кого е това ръководство? Системни администратори, разработчици и собственици на уебсайтове, които искат да максимизират производителността на уеб сървъра на Linux сървър. Ако вашият сайт работи на VPS Hosting план или Dedicated Server, този урок се прилага директно към вашата среда.
Съдържание
- Какво е HTTP/2 и защо е важно?
- Предварителни изисквания
- Стъпка 1 — Актуализиране на индекса на пакетите на системата
- Стъпка 2 — Инсталиране на Nginx
- Стъпка 3 — Инсталиране на OpenSSL
- Стъпка 4 — Получаване на безплатен SSL сертификат с Let’s Encrypt
- Стъпка 5 — Конфигуриране на Nginx за HTTP/2
- Стъпка 6 — Оптимизиране на вашата конфигурация на Nginx HTTP/2
- Стъпка 7 — Тестване на конфигурацията на Nginx
- Стъпка 8 — Рестартиране на Nginx и прилагане на промени
- Стъпка 9 — Проверка дали HTTP/2 е активен
- Отстраняване на неизправности при често срещани проблеми
- Заключение
Какво е HTTP/2 и защо е важно?
HTTP/2 е втората основна версия на Hypertext Transfer Protocol, стандартизирана в RFC 7540. Тя беше разработена, за да отговори на ограниченията на производителността на HTTP/1.1, който се използва от 1997 г.
Ключни предимства на HTTP/2 пред HTTP/1.1:
| Функция | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Мултиплексиране | Една заявка на връзка | Множество едновременни заявки |
| Компресия на заглавки | Обикновени текстови заглавки | HPACK компресия |
| Server push | Не се поддържа | Поддържа се |
| Двоичен протокол | Текстов | Двоично кадриране |
| Повторно използване на връзка | Ограничено | Напълно постоянно |
| Латентност | По-висока | Значително намалена |
За собственици на уебсайтове, активирането на HTTP/2 се превежда директно в по-бързо зареждане на страниците, по-добри Core Web Vitals резултати и подобрени SEO класирания — тъй като Google използва скоростта на страницата като сигнал за класиране.
> Важно: HTTP/2 изисква HTTPS (TLS/SSL). Не можете да стартирате HTTP/2 през незашифрирана връзка в никой съвременен браузър. Това е причината получаването на SSL сертификат да е задължителна стъпка в това ръководство. Ако имате нужда от надежден сертификат за вашия домейн, AlexHost предлага SSL сертификати за всички случаи на употреба.
Предварителни изисквания
Преди да започнете, уверете се, че имате следното:
- Сървър, работещ на Ubuntu 20.04 LTS или Ubuntu 22.04 LTS (стъпките са почти идентични за двете)
- Потребител, който не е root, с привилегии sudo или директен root достъп
- Регистриран домейн, сочещ към IP адреса на вашия сървър чрез A запис
- Портове 80 и 443 отворени във вашия firewall (UFW или iptables)
- Основно познаване на командния ред на Linux
Ако все още нямате домейн, можете да го регистрирате директно чрез AlexHost регистрация на домейни и да го сочите към вашия сървър в рамките на минути.
Стъпка 1 — Актуализиране на индекса на пакетите на системата
Винаги започнете с опресняване на индекса на пакетите, за да се уверите, че инсталирате най-новите налични версии на всички софтуер:
sudo apt update && sudo apt upgrade -yТази команда актуализира локалния списък на пакетите и надстройва всички остарели пакети, които вече са инсталирани на вашата система.
Стъпка 2 — Инсталиране на Nginx
Инсталиране на пакета Nginx
Хранилищата по подразбиране на Ubuntu включват стабилна версия на Nginx. Инсталирайте го с:
sudo apt install nginx -yСтартиране на услугата Nginx
След инсталирането, стартирайте услугата Nginx веднага:
sudo systemctl start nginxАктивиране на Nginx да се стартира автоматично при зареждане
Уверете се, че Nginx се стартира автоматично всеки път, когато сървърът се рестартира:
sudo systemctl enable nginxПроверка дали Nginx работи
Потвърдете, че услугата е активна и работи:
sudo systemctl status nginxТрябва да видите изход, подобен на:
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since ...Разрешаване на Nginx през firewall
Ако UFW е активен на вашия сървър, разрешете HTTP и HTTPS трафик:
sudo ufw allow 'Nginx Full'
sudo ufw statusNginx Full отваря както порт 80 (HTTP), така и порт 443 (HTTPS), които и двата са необходими за тази настройка.
Стъпка 3 — Инсталиране на OpenSSL
HTTP/2 зависи от TLS, който от своя страна зависи от OpenSSL. Инсталирайте го, за да се уверите, че всички криптографски зависимости са налични:
sudo apt install openssl -yПроверете инсталираната версия:
openssl versionТрябва да видите изход като OpenSSL 3.0.x или подобен. Всяка версия над 1.0.2 напълно поддържа шифрите, необходими за HTTP/2.
Стъпка 4 — Получаване на безплатен SSL сертификат с Let’s Encrypt
Let’s Encrypt предоставя безплатни, автоматично подновяеми SSL/TLS сертификати, които са надеждни от всички основни браузъри. Клиентът Certbot прави целия процес лесен.
Инсталиране на Certbot и плъгина за Nginx
sudo apt install certbot python3-certbot-nginx -yПоискване на вашия SSL сертификат
Заменете your_domain.com с вашия действителен регистриран домейн:
sudo certbot --nginx -d your_domain.com -d www.your_domain.comCertbot ще:
- Проверява собствеността на домейна чрез HTTP предизвикателство
- Издава сертификата от Let’s Encrypt
- Автоматично модифицира вашата конфигурация на Nginx да използва сертификата
- Настройва HTTPS пренасочвания от HTTP
Следвайте интерактивните подсказки. Когато бъдете попитани дали да пренасочите HTTP трафик към HTTPS, изберете опция 2 (Пренасочване) — това е препоръчаният избор.
Проверка на автоматичното подновяване на сертификата
Сертификатите на Let’s Encrypt изтичат след 90 дни. Certbot инсталира cron работа или systemd таймер, за да ги подновява автоматично. Тестирайте процеса на подновяване с пробен пуск:
sudo certbot renew --dry-runАко не се появят грешки, автоматичното подновяване е правилно конфигурирано.
> Съвет: За производствени среди с множество домейни или wildcard сертификати, помислете за Dedicated Server за пълен контрол над вашата SSL инфраструктура.
Стъпка 5 — Конфигуриране на Nginx за HTTP/2
Сега, когато SSL е на място, трябва да активирате явно HTTP/2 в конфигурацията на блока сървър на Nginx.
Отваряне на файла с конфигурация на Nginx
Конфигурацията на сайта по подразбиране се намира на:
sudo nano /etc/nginx/sites-available/defaultАко сте създали персонализиран блок сървър за вашия домейн (препоръчано), отворете този файл вместо това:
sudo nano /etc/nginx/sites-available/your_domain.comАктуализиране на блока сървър за активиране на HTTP/2
Намерете директивата listen 443 ssl;. Certbot ще я е добавил автоматично. Модифицирайте я, за да включите http2:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name your_domain.com www.your_domain.com;
# SSL Certificate paths (set by Certbot)
ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
root /var/www/your_domain.com/html;
index index.html index.htm index.php;
location / {
try_files $uri $uri/ =404;
}
}
# HTTP to HTTPS redirect block
server {
listen 80;
listen [::]:80;
server_name your_domain.com www.your_domain.com;
return 301 https://$host$request_uri;
}Критичната промяна е на линията listen: добавянето на http2 след ssl активира протокола HTTP/2 за този виртуален хост.
Запазване и изход
Натиснете CTRL + X, след това Y, след това Enter за запазване на файла и изход от редактора nano.
Стъпка 6 — Оптимизиране на вашата конфигурация на Nginx HTTP/2
Просто активирането на HTTP/2 е добър старт, но прилагането на допълнителни оптимизации гарантира, че извличате максимална производителност от вашата настройка.
Препоръчани настройки за SSL и производителност
Добавете или проверете следните директиви вътре в вашия блок server:
# Modern TLS protocols only
ssl_protocols TLSv1.2 TLSv1.3;
# Strong cipher suites compatible with HTTP/2
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
# SSL session caching for performance
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_session_tickets off;
# OCSP Stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
# HTTP Strict Transport Security (HSTS)
add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;
# Additional security headers
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
# Gzip compression (complements HTTP/2)
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_types text/plain text/css text/xml application/json application/javascript application/rss+xml application/atom+xml image/svg+xml;> Забележка относно HTTP/2 и Gzip: HTTP/2 използва собствена HPACK компресия на заглавки, но активирането на Gzip за тела на отговори все още осигурява значителни спестявания на честотна лента за текстови активи.
Стъпка 7 — Тестване на конфигурацията на Nginx
Никога не рестартирайте Nginx без първо да тестирате конфигурацията за синтактични грешки. Неправилно конфигуриран файл може да свали целия ваш уеб сървър.
Стартирайте вградения тест на конфигурацията:
sudo nginx -tУспешен тест произвежда:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulАко видите някакви грешки, преглеждайте внимателно изхода. Съобщението за грешка ще включва име на файл и номер на линия, където е открит проблемът.
Стъпка 8 — Рестартиране на Nginx и прилагане на промени
След като тестът на конфигурацията премине успешно, рестартирайте Nginx, за да приложите всички промени:
sudo systemctl restart nginxАлтернативно, ако предпочитате презареждане без прекъсване (което прилага промени в конфигурацията без прекъсване на активни връзки):
sudo systemctl reload nginxЗа активиране на HTTP/2 специално, препоръчва се пълен рестарт, за да се гарантира, че новите настройки на протокола са напълно инициализирани.
Стъпка 9 — Проверка дали HTTP/2 е активен
След рестартирането на Nginx, потвърдете, че HTTP/2 действително се предоставя на клиентите, използвайки един от следните методи.
Метод 1: Използване на curl
Инструментът за командния ред curl може да докладва версията на протокола, която се използва:
curl -I --http2 https://your_domain.comПотърсете заглавката на отговора:
HTTP/2 200Ако видите HTTP/2 200, HTTP/2 работи правилно.
Метод 2: Използване на командата OpenSSL
openssl s_client -connect your_domain.com:443 -alpn h2В изхода потърсете:
ALPN protocol: h2h2 е идентификаторът ALPN за HTTP/2. Ако видите това, вашият сървър правилно рекламира поддръжката на HTTP/2 по време на TLS handshake.
Метод 3: Използване на инструментите на браузъра за разработчик
- Отворете вашия уебсайт в Google Chrome или Mozilla Firefox
- Натиснете
F12за отваряне на инструментите на разработчика - Навигирайте до раздела Мрежа
- Презаредете страниц
