Nginx необходимо настроить соответствующую библиотеку SSL при компиляции, чтобы гарантировать поддержку протоколов на основе HTTPS, таких как HTTP3.0 и HTTP2.0. Эти алгоритмы шифрования в основном предоставляются OpenSSL. Кроме того, BoringSSL — это ветвь OpenSSL, созданная Google и специально используемая для поддержки алгоритма шифрования передачи данных 0-RTT протокола UDP TLS 1.3. BoringSSL отличается высокой совместимостью и синхронизацией с OpenSSL, а некоторые улучшения и функции будут постепенно интегрированы в OpenSSL.
Nginx официально поддерживает протоколы QUIC и HTTP/3, начиная с версии 1.25. Начиная с версии 1.25.0, двоичный пакет Nginx в среде Linux имеет встроенную поддержку QUIC и HTTP/3. Однако эти новые поддерживаемые протоколы все еще находятся на экспериментальной стадии, поэтому пользователям, возможно, придется самостоятельно настроить и скомпилировать Nginx для использования.
Официальный поставщик предоставляет пользователям на выбор три библиотеки SSL. Подробную информацию можно найти в соответствующем контенте официальной документации Nginx. https://nginx.org/en/docs/quic.html Если при выборе библиотеки SSL пользователи хотят в полной мере воспользоваться возможностями QUIC и HTTP/3, рекомендуется использовать библиотеки SSL, специально разработанные для этих протоколов, например BoringSSL, LibreSSL или QuicTLS. Без использования этих выделенных библиотек SSL Nginx вернется к использованию уровня совместимости OpenSSL, который может иметь ограниченную функциональность или не иметь полной поддержки.
Для демонстрации я использую BoringSSL.
Обратите внимание, что для компиляции и установки BoringSSL требуется cmake3 или более поздняя версия.
# Скачать библиотеку Borsssl
git clone --depth=1 https://github.com/google/boringssl.git
apt-get update
apt-get install -y build-essential cmake
add-apt-repository ppa:longsleep/golang-backports
apt-get update
apt-get install -y openssl golang-go libpcre3 libpcre3-dev libssl-dev zlib1g-dev
cd boringssl && mkdir build && cd build && cmake .. && make && cd ../../
По состоянию на январь 2024 г. последняя версия Nginx — 1.25.3.
wget https://nginx.org/download/nginx-1.25.3.tar.gz
tar xvf nginx-1.25.3.tar.gz
useradd nginx -s /sbin/nologin -M
./configure --prefix=/usr/local/nginx \
--with-debug \
--with-http_v3_module \
--with-http_v2_module \
--with-cc-opt="-I../boringssl/include" --with-ld-opt="-L../boringssl/build/ssl -L../boringssl/build/crypto"
make && make install
# Некоторое содержимое по умолчанию опущено в файле конфигурации.
user nginx;
worker_processes 1;
events {
worker_connections 65535;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" $http3';
server {
listen 443 quic reuseport; # давать возможность quic протокол
listen 443 ssl; # давать возможность http2 браузер не поддерживает протокол http3 , вы можете выбрать http2
server_name www.example.com;
ssl_protocols TLSv1.3; # QUIC requires TLS 1.3 #supporttlsпротокол1.3
ssl_certificate /usr/local/nginx/ssl/www.example.com/cert.pem;
ssl_certificate_key /usr/local/nginx/ssl/www.example.com/cert.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
add_header Alt-Svc 'h3=":443"; ma=86400';
# Alt-Svc полное имя «Альтернатива-Сервис» дословно переводится как «альтернативная служба». В этом заголовке указан список альтернативных методов доступа к текущему сайту, позволяющий серверу сообщить клиенту “смотреть,Я использую это на этом порту на этом хостепротоколпредоставлять те же услуги”。Обычно используется при предоставлении “QUIC” В ожидании появленияпротокол Поддерживая,Достичь обратной совместимости
расположение/{
roothtml;
индекс index.html index.htm;
}
}
}
Поскольку в настоящее время браузеры имеют ограниченную поддержку HTTP3.0/QUIC, вы можете использовать https://http3check.net/ Чтобы проверить, успешно ли сайт включает HTTP3.