---
author: rosehosting.com
category: 系统运维
comments_data:
- date: '2017-03-01 09:16:23'
  message: 好水的文章啊， CentOS 的 OpenSSL 1.0.1 能开 HTTP/2 ?
  postip: 39.183.87.104
  username: ivmm [Chrome 56.0|Mac 10.12]
- date: '2017-03-02 22:30:29'
  message: 简而言之，升级“相关软件”
  postip: 117.151.48.146
  username: 来自湖北的 Chrome 56.0|Windows 10 用户
- date: '2017-03-03 12:44:50'
  message: 没错，OpenSSL 至少要升级到 openssl-1.0.2j
  postip: 175.8.178.251
  username: 来自湖南长沙的 Chrome 50.0|Windows 7 用户
- date: '2017-03-03 17:03:40'
  message: 有些错误的，水的没有根本就没有翻译价值，降低效率
  postip: 39.174.236.14
  username: ivmm [Chrome 56.0|Mac 10.12]
count:
  commentnum: 4
  favtimes: 4
  likes: 0
  sharetimes: 0
  viewnum: 7945
date: '2017-02-28 13:20:00'
editorchoice: false
excerpt: HTTP/2 协议的目标是减少延迟，并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求，因此 Web 应用程序会更快。
fromurl: https://www.rosehosting.com/blog/how-to-enable-http2-in-nginx-on-ubuntu-and-centos/
id: 8248
islctt: true
largepic: /images/p/201702/28/132038abpn30ddtazcnw5o.jpg
permalink: /article-8248-1.html
pic: /images/p/201702/28/132038abpn30ddtazcnw5o.jpg.thumb.jpg
related: []
reviewer: ''
selector: ''
summary: HTTP/2 协议的目标是减少延迟，并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求，因此 Web 应用程序会更快。
tags:
- HTTP/2
- nginx
thumb: false
title: 如何在 Ubuntu 和 CentOS 上启用 Nginx 的 HTTP/2 协议支持
titlepic: true
translator: Flowsnow
updated: '2017-02-28 13:20:00'
---

![](/images/p/201702/28/132038abpn30ddtazcnw5o.jpg)


HTTP/2 是 HTTP 网络协议的主要修订版本，其专注于 HTTP 协议的性能改进。HTTP/2 协议的目标是减少延迟，并且允许在 Web 浏览器和服务器之间的一个连接上并行发起多个请求，因此 Web 应用程序会更快。在本篇教程中，我们将像你展示如何在安装有 Ubuntu 或 CentOS 作为操作系统的 Linux VPS 上使用开启 Nginx 的 HTTP/2 协议。如果你使用 Apache，你可以查看我们的另一篇教程：[如何在 Ubuntu 上开启 Apache 的 HTTP/2 协议](https://www.rosehosting.com/blog/how-to-set-up-apache-with-http2-support-on-ubuntu-16-04/)。


### 必备条件


为了能够按照本篇教程最终在服务器上启用 HTTP/2 协议，你需要先安装好 Nginx 。并且确保功能正常而且配置没有错误。你可以使用下面的命令来检查一下：



```
sudo nginx -t

```

此外，你需要有服务器的 root 访问权限，或者至少有一个具有 sudo 权限的非 root 系统用户，以便你在修改 Nginx 配置文件的时候不会出现权限问题。最后你需要有一个域名和一个颁发给这个域名的有效的 SSL 证书。


### 在 Ubuntu 上开启 Nginx 的 HTTP/2 协议


为了在 Ubuntu VPS 上开启 Nginx 的 HTTP/2 协议，你需要编辑默认的 Nginx 的服务（`server`）块，我们使用的是 `nano`，你可以使用你自己的文本编辑器。



```
sudo nano /etc/nginx/sites-available/default

```

增加下面的服务块：



```
server {  
        server_name domain.com www.domain.com;
        listen 443 ssl http2 default_server;
        root /var/www/html;
        index index.html;

        location / {
                try_files $uri $uri/ =404;
        }

        ssl_certificate /etc/nginx/ssl/domain.com.crt;
        ssl_certificate_key /etc/nginx/ssl/domain.com.key;
}

server {
       listen         80;
       server_name    domain.com www.domain.com;
       return         301 https://$server_name$request_uri;
}

```

确保 `domain.com` 替换成你真正的域名。 此外，应正确设置文档根（`root`）目录，还有 SSL 证书和密钥的路径。


当你编辑完成这个服务块之后，需要保存并关闭文件。使用以下命令检查 Nginx 配置是否有错误：



```
sudo nginx -t

```

为了刚刚的改变生效，需要重启 Nginx：



```
sudo systemctl restart nginx.service

```

如果你想为另一个域名开启 HTTP/2 协议，你可以查看我们的博客[如何在 Ubuntu 和 CentOS 上设置 Nginx 服务块](https://www.rosehosting.com/blog/how-to-set-up-nginx-server-blocks-on-ubuntu-and-centos/)。


### 在 CentOS 上开启 Nginx 的 HTTP/2 协议


为了在 CentOS VPS 开启 Nginx 的 HTTP/2 协议，你需要按照 Ubuntu 上完全相同的步骤做。唯一的不同点是 Nginx 块文件的位置。为了在 CentOS 上编辑默认的 Nginx 服务块，你需要进入 `/etc/nginx/conf.d` 这个文件夹。



```
# nano /etc/nginx/conf.d/default.conf

```

再次检查配置是否有错误，保存并关闭文件，然后使用以下命令重新启动 Nginx 服务：



```
# systemctl restart nginx.service

```

为了检测 Nginx 的 HTTP/2 协议是否开启成功，你可以使用一些[在线 HTTP/2 检测工具](https://www.rosehosting.com/network-tools/http2-support.html)。




---


via: <https://www.rosehosting.com/blog/how-to-enable-http2-in-nginx-on-ubuntu-and-centos/>


作者：[rosehosting.com](https://www.rosehosting.com/blog/how-to-enable-http2-in-nginx-on-ubuntu-and-centos/) 译者：[Flowsnow](https://github.com/Flowsnow) 校对：[wxy](https://github.com/wxy)


本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译，[Linux中国](https://linux.cn/) 荣誉推出