在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
广告
将在 10 秒后关闭
bannerAds