在Ubuntu 14.04上安装nginx 1.9.5 + ngx_pagespeed并进行HTTP/2的配置
关于
这是在Ubuntu 14.04环境下搭建nginx + ngx_pagespeed环境时的操作备忘录。
最近,nginx的主要版本1.9.5发布了,据说已经加入了对HTTP/2的支持,所以我打算趁这个机会把我们的服务器(现在是SPDY)升级成HTTP/2!
顺便提一句,后台使用的php-fpm(FastCGI)不支持HTTP/2???这让我有些担心,但事实证明我不必担心。
据公式解释,Nginx作为HTTP/2的网关,将与后端进行HTTP/1.1的互通转换。
NGINX充当”HTTP/2网关”,以便于向新协议过渡。在前端,NGINX与支持HTTP/2的客户端网页浏览器进行通信,而在后端,它与HTTP/1.x(或FastCGI、uwsgi、SCGI)进行通信,就像之前一样。在两者之间,NGINX进行HTTP/2和HTTP/1.x(或FastCGI等)之间的转换。这意味着由NGINX代理的服务器和应用程序不会受到切换到HTTP/2的影响,实际上甚至不需要知道其客户端正在使用HTTP/2。
前提条件
-
- OS: Ubuntu 14.04 LTS
-
- 追加モジュール
ngx_pagespeed
TLSは対応済みとする
如果只想安装纯粹的nginx而不使用任何额外的模块,可以使用Mainline版的apt源进行apt安装(参考),但由于本次要安装ngx_pagespeed模块,我们将采用从源代码编译并构建deb包的方法。
任务日志
获取Nginx的源代码和依赖包
我之前说过不会使用apt,但只是用apt来获取源代码和依赖包。
我将编辑/etc/apt/sources.list。
# nginx mainline
deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx
获取源代码并安装依赖包。
$ sudo mkdir /opt/nginx
$ cd /opt/nginx
$ sudo apt-get update
$ sudo apt-get build-dep nginx
$ sudo apt-get source nginx
$ ls -1p
nginx-1.9.5/
nginx_1.9.5-1~trusty.debian.tar.gz
nginx_1.9.5-1~trusty.dsc
nginx_1.9.5.orig.tar.gz
為了避免將來錯誤地輸入apt-get install nginx,請從/etc/apt/sources.list中刪除剛才添加的定義。
# nginx mainline
# deb http://nginx.org/packages/mainline/ubuntu/ trusty nginx
# deb-src http://nginx.org/packages/mainline/ubuntu/ trusty nginx
获取ngx_pagespeed模块的源代码和依赖包。
安装ngx_pagespeed模块所需的依赖软件包。
$ sudo apt-get install build-essential zlib1g-dev libpcre3 libpcre3-dev unzip
获取ngx_pagespeed模块的源代码。
$ sudo mkdir -p /opt/ngx_pagespeed
$ sudo wget https://github.com/pagespeed/ngx_pagespeed/archive/release-1.9.32.6-beta.zip
$ sudo unzip release-1.9.32.6-beta.zip
$ cd ngx_pagespeed-release-1.9.32.6-beta
$ sudo wget https://dl.google.com/dl/page-speed/psol/1.9.32.6.tar.gz
$ sudo tar -xzvf 1.9.32.6.tar.gz
编辑Nginx的构建配置
在编译Nginx时,设置为将ngx_pagespeed作为一个模块添加。
编辑/opt/nginx/nginx-1.9.5/debian/rules文件,添加ngx_pagespeed模块。
override_dh_auto_build:
...
--with-ipv6 \
# 追加
--add-module=/opt/ngx_pagespeed/ngx_pagespeed-release-1.9.32.6-beta
...
configure_debug:
...
--with-debug \
# 追加
--add-module=/opt/ngx_pagespeed/ngx_pagespeed-release-1.9.32.6-beta
...
编译
$ cd /opt/nginx/nginx-1.9.5
$ sudo dpkg-buildpackage -b
成功编译后,可以确认在/opt/nginx中生成了deb文件。
需要安装的deb文件是nginx_1.9.5-1~trusty_amd64.deb。
$ cd /opt/nginx
$ ls -1p
nginx-1.9.5/
nginx-dbg_1.9.5-1~trusty_amd64.deb
nginx-debug_1.9.5-1~trusty_amd64.deb
nginx_1.9.5-1~trusty.debian.tar.gz
nginx_1.9.5-1~trusty.dsc
nginx_1.9.5-1~trusty_amd64.changes
nginx_1.9.5-1~trusty_amd64.deb
nginx_1.9.5.orig.tar.gz
安装
为了以防万一,我们会在备份设置文件的同时准备旧版本的deb文件,以便随时能够恢复为原来的状态。
$ cd /opt/nginx
$ sudo service nginx stop
$ sudo dpkg -i nginx_1.9.5-1~trusty_amd64.deb
$ sudo service nginx start
如果能够正常启动,那么我们会重新启用HTTP/2,并重新启动nginx。
server {
...
listen 443 ssl http2;
listen [::]:443 ssl http2;
...
}
$ sudo service nginx restart
您可以通过HTTP/2和SPDY指示器来检查是否启用了HTTP/2。
请参考
-
- Compiling Third-Party Modules Into Nginx
- Build ngx_pagespeed From Source