【问题标题】:How to disable http2 in nginx如何在 nginx 中禁用 http2
【发布时间】:2017-01-20 01:14:06
【问题描述】:

由于this Safari 的 HTTP/2 和表单帖子问题,我想禁用通过 HTTP/2 提供一个网页。所以我只是从相应的 nginx 服务器块中的 server_name 指令中删除了“http2”。

server {
  listen x.x.x.x:443 ssl;
  server_name xxxx;
  [...]
}

但是在我重新启动 NginX 并在各种浏览器中打开网站后,仍然使用 HTTP/2 协议... 我做错了什么?

我的 NginX 版本是 1.10.1

问候杨

【问题讨论】:

  • 在其他服务器块中寻找@​​987654323@。
  • 还有其他启用了 htt2 的服务器块。我不能只为一个服务器块禁用它吗?

标签: nginx safari http2


【解决方案1】:

有人在这里回答了正确的解决方案,但帖子消失了......

您必须为一个 IP 地址/端口上的所有服务器块禁用 http2。如果有一个服务器块配置为启用 http2,则该 IP 上的所有服务器块都启用它。

【讨论】:

  • 感谢您指出这一点。我只是自己尝试过,实际上您必须在所有虚拟主机中禁用 http2 才能禁用 http2。这真的很糟糕......
  • 这让我抓狂了一阵子,我解决后就看到了。
  • 也让我发疯了,在它指向 http1/1 之前必须禁用所有其他虚拟主机的 http2
  • 这不可能是真的,因为我的服务器在 IP 地址上提供 http1.1,在域上提供 h2。
【解决方案2】:

NGINX 不能在 1 个端口上提供多个协议。 使其成为不同的端口。 示例:端口 443 上的 HTTP/2

server {
  listen x.x.x.x:443 ssl http2;
  server_name xxxx;
  [...]
}

然后是端口 444 上的 HTTP 1.1

 server {
      listen x.x.x.x:444 ssl;
      server_name xxxx;
      [...]
    }

或者如果你想禁用 http/2 模块,重新安装不带 --with-http_v2_module 的 NGINX

【讨论】:

  • 这不可能是真的,因为我的服务器在 IP 地址上提供 http1.1,在域上提供 h2。
猜你喜欢
  • 2017-11-03
  • 2020-09-08
  • 2017-03-26
  • 2018-09-06
  • 2017-07-03
  • 2019-02-25
  • 2017-03-14
  • 2017-02-26
  • 2020-05-06
相关资源
最近更新 更多