用Nginx尝试使用HTTP2.

极客女子的第12个圣诞日历文章是关于这个话题的。我从去年(2014年夏季)开始默默地收集信息,包括了 RFC 定义,现在也想把它应用到我的服务中去!于是我决定具体验证一下,并写下这篇文章作为契机。我将尝试在 nginx 上使用 http2。关于 http/2,许多人都已经写过了,所以我想试试几个并考虑稳定性、易用性和维护间隔作为选择的标准。之后我还计划写一些关于 h2o 和 nghttp2 的验证内容。环境:MacOS 10.11 版,vagrant 1.7.4 版,使用 vagrant 准备一个 CentOS 7.1 版的环境。

#vagrant box add centos7.1            https://github.com/CommanderK5/packer-centos-template/releases/download/0.7.1/vagrant-centos-7.1.box
#vagrant init centos7.1

编辑vagrantfile:

config.vm.define :wb01 do |wb01|
wb01.vm.box = “centos7.1”
wb01.vm.hostname = “wb01”
wb01.vm.network :private_network, ip: “192.168.22.40”
end

#运行vagrant up

从1.9.5版本开始,nginx开始支持http2协议。

NGINX Open Source 1.9.5 Released with HTTP/2 Support

本次使用以下位置提取最新版本的1.9.7源代码。
由于默认不包含,所以使用–with-http_v2_module选项来附加。

#使用wget命令下载http://nginx.org/download/nginx-1.9.7.tar.gz文件
#使用tar命令解压缩nginx-1.9.7.tar.gz文件
#切换到nginx-1.9.7目录
#运行配置命令./configure –with-http_ssl_module –with-http_v2_module –with-debug –without-http_rewrite_module
#编译源码
#安装nginx

我要注册服务。

# 进入 /usr/lib/systemd/system/ 目录。
# 创建一个名为 nginx.service 的文件。
# 使用 vi 编辑 nginx.service 文件。

内容是官方支持Fedora的。请根据您的环境进行调整。官方链接:https://www.nginx.com/resources/wiki/start/topics/examples/systemd/

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStartPre=/usr/local/nginx/sbin/nginx -t
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

使用HTTP/2支持创建自签名证书。
#使用openssl genrsa 2048命令生成server.key文件。
#使用openssl req -new -key server.key命令生成server.csr文件。
#使用openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt命令生成server.crt文件。

将以下内容添加到/usr/local/nginx/conf/nginx.conf文件中进行http2支持。

server {
    listen       443 ssl http2;
    server_name  localhost;

    ssl_certificate /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

在中文中进行原生语言的转述,只需要一个选项:
将链接复制并注册服务。
ln -s /usr/lib/systemd/system/nginx.service /etc/systemd/system/multi-user.target.wants/nginx.service
systemctl enable nginx

检查公文并启动。
#/usr/local/nginx/sbin/nginx -t
#systemctl start nginx

确认nginx是否在运行中。
#ps ax |grep nginx
969 ? Ss 0:00 nginx: 主进程 /usr/local/nginx/sbin/nginx
973 ? S 0:00 nginx: 工作进程
3573 pts/0 S+ 0:00 grep –color=auto nginx

スクリーンショット 2015-12-12 0.04.10.png

指示灯变蓝后,确认http/2已启用!由于可以通过简单设置启用,我希望继续使用它。

广告
将在 10 秒后关闭
bannerAds