簡答:目前的設置不可能。
在啓動時,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;
...
}