2016-12-06 61 views
2

我有幾個虛擬主機nginx我可以爲Nginx上的特定虛擬主機啓用HTTP/2嗎?

我可以啓用HTTP/2特定的虛擬主機只有nginx

當我使HTTP/2一個虛擬主機,如:

server { 
    listen  443 ssl http2; 
    server_name a.b.com; 
    ... 
} 

我可以HTTP2.0訪問a.b.com。

但是現在同一個nginx上的其他所有虛擬主機都支持HTTP/2。 但我只想通過HTTP/1.1訪問它們。

服務器級別的http2指令是什麼?

回答

2

簡答:目前的設置不可能。

在啓動時,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; 
    ... 
} 
相關問題