Поддержка HTTP/2 и HTTP/3 в Nginx v1.27.0
Привет, я бездарь.
Казалось, что дом в Токио был найден, но все вернулось на круги своя, и в эти дни мне кажется, что я нашел хорошее жилье. В худшем случае, я просто перееду в какой-нибудь общий дом.
В эти дни я благодарен, что коллеги по проекту на моей нынешней работе сказали: «Давайте устроим прощальную вечеринку!»
Я искренне думаю, что мне очень повезло с людьми в моей жизни.
Кстати, я отправил pull-запрос в Deno на днях, и они установили веху, так что мне просто нужно спокойно следить за исходным кодом, не паникуя. Найти оптимальное решение для самого Rust-кода Deno, который стал огромным, и минимизировать изменения даже для незначительных функций, когда документация похожа на исходный код, означает, что мне придется пробовать разные вещи.
Если не получится, подумаю об этом, когда не получится.
Включаем поддержку HTTP/2 и HTTP/3 в Nginx
Читая интервью с Расмусом Лердорфом, разработчиком PHP, я увидел, как он говорил о том, что чувствует будущее в HTTP/2, и мне стало интересно: «А что там с моим сервером Nginx?» — и я решил попробовать его настроить.
Похоже, поддержка HTTP/3 в Nginx доступна с версии v1.25, поэтому проверяем версию.
# nginx -v
nginx version: nginx/1.27.0
Похоже, поддерживается.
Мой Nginx был собран мной, а не установлен через pkg, поэтому могут быть различия даже в одной и той же среде FreeBSD.
Не будем усложнять и попробуем пока настроить.
Запись в файл конфигурации
Поскольку это всего лишь сервер Nginx, работающий как обратный прокси, я сделаю это быстро.
server {
listen 443 ssl;
listen 443 quic reuseport;
listen [::]:443 quic reuseport;
http2 on;
http3 on;
server_name soulminingrig.com www.soulminingrig.com;
Кажется, HTTP/3 — это то, что Google пытается продвигать, и сам протокол QUIC, по-моему, был создан Google.
Добавляем следующее в информацию заголовка:
add_header Alt-Svc 'h3=":443"; ma=86400';
add_header X-Content-Type-Options nosniff;
Затем, если тест с nginx -t проходит без ошибок, перезапускаем.
Поскольку я работаю от имени пользователя root, выполняю следующее:
service nginx restart
И, похоже, сам QUIC использует 443/UDP, поэтому мне нужно открыть этот порт...
Глава 3. Подробное описание HTTP/3 – Как использовать QUIC и добиться ускорения
В настоящее время многие реализации, похоже, по умолчанию используют порт UDP 443.
Как видно из вышеизложенного,
add_header Alt-Svc 'h3=":443"; ma=86400';
поскольку настроенный порт — 443, то, если открыть порт 443 и затем изменить его, можно будет открыть другой порт.
vim /etc/pf.conf
Теперь добавляем следующее:
set skip on lo
exsrv1 = 167.179.75.206
~~~
# HTTP/3 Protocol
pass in inet proto udp from any to $exsrv1 port 443
Затем тестируем с опцией -nf, а затем применяем с -f.
pfctl -nf /etc/pf.conf
pfctl -f /etc/pf.conf
Применилось ли правильно?
Есть способ проверить, применилось ли, с помощью Curl, но обычно в таких случаях лучше проверять из места, не связанного с вашей сетью, чтобы убедиться в правильности, поэтому я проверю через браузер.
Проверка HTTP/3

Да, получилось!
Есть и те, кто настраивает более детально, но я думаю, что пока этого достаточно.
На этом все. До новых встреч.