Короткий ответ: невозможно при вашей текущей настройке.
При запуске nginx
первого создает отдельный процесс для каждой группы виртуальных хостов, которые прослушивают же IP: порт комбинации, а затем устанавливает возможности этого процесса будет суммой всех возможностей каждого виртуальным хост в этой группе, обработанный указанным процессом.
В вашем случае существует только один процесс, который обрабатывает все виртуальные хосты, связанные с *:443
, поэтому процесс включает в себя функцию http2
.
Для того, чтобы достичь того, чего вы хотите, вы должны сделать nginx
икру другой процесс, который не имеет возможности http2
на отдельном IP: порт комбинации.
Для виртуальных хостов, которые вы хотите получить доступ через http2
, вы должны либо:
- использовать другой порт - тривиальное, просто использовать другой порт для них (например,
listen 8443 ssl http2;
) и удалить http2
из всех другие (например, `слушать 443 по протоколу SSL;)
- использовать другой IP - вам нужно добавить еще один IP-адрес в то же NIC, который использует ваш текущий IP и изменить ваши виртуальные хосты соответственно (например,
listen new_ip:443 ssl http2;
и listen current_ip:443 ssl;
соответственно)
Пример конфигурации для нескольких IP-адресов:
server {
listen current_ip:443 ssl;
server_name http11-host.example.com;
...
}
server {
listen current_ip:443 ssl;
server_name another-http11-host.example.com;
...
}
...
...
server {
listen new_ip:443 ssl http2;
server_name http2-host.example.net;
...
}
server {
listen current_ip:443 ssl http2;
server_name another-http2-host.example.org;
...
}