Простой способ массового переноса http2 из listen в отдельную директиву

Maxim Dounin mdounin на mdounin.ru
Чт Дек 28 13:54:43 UTC 2023


Hello!

On Thu, Dec 28, 2023 at 11:21:55AM +0300, Evgeniy Berdnikov wrote:

> On Thu, Dec 28, 2023 at 10:07:41AM +0200, Иван wrote:
> > nginx: [warn] the "listen ... http2" directive is deprecated, use the
> > "http2" directive instead in /etc/nginx/sites-enabled/...:152
> > 
> > 
> > Надо http2 из параметра директивы listen перенести в отдельную
> > 
> > http2 on;
> > 
> > 
> > У меня несколько десятков блоков server. В некоторых http2 нужен, в
> > некоторых (listen 80) нет. Есть какие-нибудь идеи как конвертацию сделать
> > массово?
> 
>  Это конкурс на лучший однострочник в кружке юного программиста?
> 
>  perl -i~ -pe 'if(m/listen\s+/ && s/\s+http2//) {print "http2 on;\n"}' *.conf

Предостерегу от подобных решений: в общем случае это не даст 
идентичный конфиг, так как из чего-то вроде:

   server { listen 443 ssl http2; server_name foo; ... }
   server { listen 443; server_name bar; ... }

где HTTP/2 работает в обоих блоках server, получится конфигурация 
вида:

   server { listen 443 ssl; http2 on; server_name foo; ... }
   server { listen 443; server_name bar; ... }

где во втором блоке server HTTP/2 выключен.

-- 
Maxim Dounin
http://mdounin.ru/


Подробная информация о списке рассылки nginx-ru