2016-12-06 63 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; 
    ... 
} 
相关问题