简答:目前的设置不可能。
在启动时,nginx
首先创建一个单独的进程为每个组在同一IP听虚拟主机:端口组合,然后设置该过程的能力是每个虚拟的全部能力的总和由该流程处理的该组中的主持人。
对于您的情况,只有一个进程可以处理绑定到*:443
的所有虚拟主机,因此该进程包括http2
功能。
为了达到你想要什么,你需要做nginx
产生一个不同的过程,没有一个单独的IP 的http2
能力:端口组合。
对于要通过http2
要访问的虚拟主机,你必须:
- 使用不同的端口 - 平凡,只是使用其他端口为他们(如
listen 8443 ssl http2;
),并从所有删除http2
其他 (比如'听443 SSL)
- 使用不同的IP - 你需要另一个IP添加到使用您当前的IP相同NIC并相应地修改您的虚拟主机 (例如
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;
...
}