Как да инсталирате Nginx с поддръжка на HTTP/2 в Ubuntu (Пълно ръководство)
Nginx е един от най-широко разпространените уеб сървъри в света, известен със своята изключителна производителност, нисък разход на памет и способност да обработва хиляди едновременни връзки. Когато се комбинира с HTTP/2, Nginx се превръща в още по-мощна платформа — позволяваща мултиплексирани заявки, компресия на заглавки, server push и драматично намалени времена за зареждане на страниците.
Това всеобхватно ръководство ви преведе през всяка стъпка, необходима за инсталиране на Nginx с пълна поддръжка на HTTP/2 на Ubuntu 20.04 и Ubuntu 22.04 LTS, от първоначалната настройка чрез SSL конфигурация, оптимизация на server block и живо верифициране.
> За кого е това ръководство? Системни администратори, разработчици и собственици на уебсайтове, които искат да максимизират производителността на уеб сървъра на Linux сървър. Ако вашият сайт работи на VPS Hosting план или Dedicated Server, този урок се прилага директно към вашата среда.
Какво е HTTP/2 и защо е важно?
HTTP/2 е втората основна версия на Hypertext Transfer Protocol, стандартизирана в RFC 7540. Тя беше разработена, за да преодолее ограниченията на производителността на HTTP/1.1, който се използва от 1997 г.
Ключови предимства на HTTP/2 пред HTTP/1.1:
| Функция | HTTP/1.1 | HTTP/2 |
|---|---|---|
| Мултиплексиране | Един запрос на връзка | Множество едновременни запроси |
| Компресия на заглавки | Заглавки в обикновен текст | HPACK компресия |
| Сървър 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 (стъпките са почти идентични и за двете)
- Непривилегирован потребител с
sudoпривилегии или директен root достъп - Регистрирано доменно име, насочено към IP адреса на вашия сервър чрез A запис
- Портове 80 и 443 отворени във вашия firewall (UFW или iptables)
- Основно познаване на командния ред на Linux
Ако още нямате домен, можете да регистрирате един директно чрез AlexHost Domain Registration и да го насочите към вашия сервър в рамките на няколко минути.
Стъпка 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 през защитната стена
Ако 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за отваряне на Developer Tools - Отидете на раздела Network
- Презаредете страницата (
F5илиCtrl+R) - Щракнете с десния бутон на мишката върху всяко заглавие на колона в списъка с заявки и активирайте колоната Protocol
- Трябва да видите
h2посочен като протокол за заявките на вашия домейн
Метод 4: Използване на онлайн инструмент за тестване на HTTP/2
Посетете https://tools.keycdn.com/http2-test и въведете вашия домейн. Инструментът ще потвърди дали HTTP/2 е активен и ще предостави допълнителни подробности за конфигурацията на TLS на вашия сървър.
Отстраняване на често срещани проблеми
HTTP/2 не се показва в браузъра въпреки конфигурацията
- Причина: Браузърът е кеширал по-стара HTTP/1.1 връзка.
- Решение: Изчистете кеша и бисквитките на браузъра или тестирайте в приватен/инкогнито прозорец.
nginx -t връща грешки на SSL сертификата
- Причина: Неправилни пътища на сертификата в конфигурационния файл.
- Решение: Проверете точните пътища с помощта на
sudo ls /etc/letsencrypt/live/your_domain.com/и актуализирайте директивитеssl_certificateиssl_certificate_keyсъответно.
Порт 443 не е достъпен
- Причина: Защитната стена блокира HTTPS трафика.
- Решение: Изпълнете
sudo ufw allow 443/tcpи проверете сsudo ufw status.
Certbot не успява да валидира домена
- Причина: DNS A записът все още не е разпространен или порт 80 е блокиран.
- Решение: Проверете дали вашият домен се разрешава на правилния IP с помощта на
dig your_domain.com A. Убедете се, че порт 80 е отворен за ACME HTTP предизвикателството.
unknown directive "http2" грешка в Nginx
- Причина: Версията на Nginx е твърде стара (преди 1.9.5) или е компилирана без поддръжка на HTTP/2.
- Решение: Актуализирайте Nginx. На Ubuntu 20.04+, версията от хранилището по подразбиране поддържа HTTP/2. Можете също да добавите официалния Nginx PPA:
sudo add-apt-repository ppa:nginx/stable && sudo apt update && sudo apt upgrade nginx.
Заключение
Успешно инсталирахте Nginx с пълна поддръжка на HTTP/2 на Ubuntu. Ето резюме на всичко, което беше постигнато:
- ✅ Инсталиран и активиран Nginx като системна услуга
- ✅ Получен безплатен, автоматично подновяван SSL сертификат чрез Let's Encrypt и Certbot
- ✅ Конфигуриран блокът на сървъра Nginx с директивата
http2 - ✅ Приложено TLS укрепване, OCSP stapling, HSTS и Gzip компресия
- ✅ Тестирана конфигурацията и потвърдено, че HTTP/2 е активен
Активирането на HTTP/2 е една от оптимизациите с най-висок ефект и най-нисък труд, които можете да направите на уеб сървър. В комбинация със силни TLS настройки и подходящи заглавки за кеширане, това значително подобрява времето за зареждане на страниците, резултатите на Core Web Vitals и в крайна сметка класирането на вашия сайт в търсачките.
Поддържайте вашия стек актуален: Редовно изпълнявайте sudo apt update && sudo apt upgrade за да поддържате Nginx, OpenSSL и Certbot актуални с най-новите пачове за сигурност.
Отведете производителността на вашия сървър по-нататък
Печалбите в производителност от HTTP/2 са най-изразени на бърза и надеждна инфраструктура. Ако в момента сте на споделен хостинг и достигате лимити на ресурсите, помислете за надграждане на VPS Hosting план за посветени ресурси и пълен root достъп. За приложения с висок трафик, Dedicated Servers предлагат несравнима сурова производителност. Можете също да управлявате лесно вашата серверна среда с VPS с cPanel ако предпочитате графичен интерфейс вместо командния ред.
Независимо от вашите нужди на инфраструктура, AlexHost предоставя платформата за изпълнение на Nginx, HTTP/2 и целия ваш уеб стек с максимална ефективност.
от всички хостинг услуги