Это не совсем возможно.Клиент отправляется только как часть HTTP-сообщения, которое отправляется только после . Очевидно, что версия HTTP для использования определена.Первоначально сообщение для создания соединения и настройки параметров SSL / TLS не будет иметь клиента (как правило, в этом случае версия HTTP определяется с использованием расширения ALPN для TLS).
Однако существуют и другиеВозможные варианты, в том числе:
В зависимости от возможностей клиента.Я не знаком с okhttp, но из быстрого Google кажется, что поддержка ALPN была добавлена только в v3, так что вы можете отключить старый NPN на вашем сервере, а затем, если это правильно, то теоретически старый клиент не сможетчтобы договориться о HTTP / 2, поэтому вернемся к HTTP / 1.1.К сожалению, похоже, что для этого нет опции конфигурации Nginx, поэтому вам нужно будет создать специальную версию OpenSSL без поддержки NPN , а затем скомпилировать Nginx для этого.Вероятно, больше хлопот, чем стоит.
Используйте Apache вместо Nginx, поскольку он никогда не поддерживал NPN
Использование нескольких IP-адресов и каким-то образом направляя каждую версию котдельный IP.Хотя я подозреваю, что вы не можете использовать отдельные порты, но, вероятно, вы тоже не сможете этого сделать.
В общем, это немного взломать, если честно, и поэтому я не рекомендую вам продолжать,Однако вы не объяснили, почему вы хотите использовать HTTP / 2 для одного набора клиентов, а не для другого.Может быть, есть лучший способ добиться того, чего вы хотите, если вы объясните это.