您的位置:首页 > 理论基础 > 计算机网络

Ubuntu 配置 Nginx http2.0 支持 (二) 编译&配置Nginx 与 pagespeed

2016-07-25 16:41 302 查看

编译&配置Nginx

[Nginx][1] 是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

因为本人是个懒人, 所以不会选择从源码编译,但是Ubuntu14.04的Nginx版本太低了, HTTP2.0需要Nginx1.9.x以上, 所以我们需要配置一下Nginx的安装源,才能顺利的完成安装任务,
既然从源码安装, 顺便再装个Google开发的一个Nginx神器, PageSpeed!
请参考https://developers.google.com/speed/pagespeed/module/build_ngx_pagespeed_from_source

干货

Bash

# 添加nginx仓库
sudo vi /etc/apt/sources.list.d/nginx.list
加入下面的内容:
#----------------
deb http://nginx.org/packages/ubuntu/ trusty nginx
deb-src http://nginx.org/packages/ubuntu/ trusty nginx
#----------------
保存退出

# 更新源
sudo apt-get update

# 注意:如果你看到信息:GPG error [...] NO_PUBKEY [...] 等等
#  请添加key:
#  sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys KEYNUMBER
#  然后再 sudo apt-get update
#------------------

# 安装Nginx和编译Ningx所需要的依赖库
# 为什么要先安装Nginx还要编译?
# 因为使用apt-get安装可以使用sudo service nginx {stop|start...}来管理,
# 可以省好多事情, 不然就要多费些手脚, 人懒...
sudo apt-get install dpkg-dev build-essential zlib1g-dev libpcre3 libpcre3-dev nginx

# 干点常规的活儿
sudo mkdir -p /MISSU/pkg/nginx
sudo chmod -R 777 /MISSU/pkg
cd /MISSU/pkg/nginx

# 从仓库下载 nginx
sudo apt-get source nginx
sudo apt-get build-dep nginx
# 看下自己下载回来的版本是什么, 配置一下版本变量,后边要用.
#我下载的是: /MISSU/pkg/nginx/nginx-1.10.0
NGX_VERSION=1.10.0

# 下载 Pagespeed
mkdir -p /MISSU/pkg/nginx/ngx_pagespeed
cd /MISSU/pkg/nginx/ngx_pagespeed
NPS_VERSION=1.11.33.1  #这个版本尽量每次安装的时候去看下最新版本,因为这货一直beta
wget https://github.com/pagespeed/ngx_pagespeed/archive/release-${NPS_VERSION}-beta.zip unzip release-${NPS_VERSION}-beta.zip
cd ngx_pagespeed-release-${NPS_VERSION}-beta/
wget https://dl.google.com/dl/page-speed/psol/${NPS_VERSION}.tar.gz tar -xzvf ${NPS_VERSION}.tar.gz  # extracts to psol/

# 开始编译Nginx了
cd /MISSU/pkg/nginx/nginx-${NGX_VERSION}

# 配置过程缺什么就sudo apt-get install lib????-dev 即可
# 这个配置可以使用 sudo nginx -V 查看到apt-get安装的参数,本参数也是那里COPY的
# 然后再加上--add-module, 其实也可以安装更多的module,只要你喜欢就好.
./configure --prefix=/usr/share/nginx \
--conf-path=/etc/nginx/nginx.conf \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log \
--lock-path=/var/lock/nginx.lock \
--pid-path=/run/nginx.pid \
--http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi \
--http-proxy-temp-path=/var/lib/nginx/proxy \
--http-scgi-temp-path=/var/lib/nginx/scgi \
--http-uwsgi-temp-path=/var/lib/nginx/uwsgi \
--with-debug --with-pcre-jit --with-ipv6 --with-http_ssl_module \
--with-http_stub_status_module --with-http_realip_module --with-http_addition_module \
--with-http_dav_module --with-http_geoip_module --with-http_gzip_static_module \
--with-http_image_filter_module --with-http_v2_module --with-http_sub_module \
--with-http_xslt_module --with-mail --with-mail_ssl_module \
--add-module=/MISSU/pkg/nginx/ngx_pagespeed/ngx_pagespeed-release-${NPS_VERSION}-beta

make
sudo make install

#删除以前的链接
sudo rm /usr/sbin/nginx

#建立一个新版本的链接
sudo ln -s /usr/share/nginx/sbin/nginx /usr/sbin/nginx

#修改nginx的SSL的配置, 只需要把虚拟主机的配置文件中的listen加多一个 http2就OK了
#如下边这样:
server {
listen       443 ssl http2;
.......

# nginx对http2.0的支持配置就完了~~
# 配置 PageSpeed其实就容易了... 好多参数, 自己上官网查, 我顺便贴一下我的配置,
# 配置内容是放在http段里的, 不要乱放!
# sudo vi /etc/nginx/nginx.conf
......
http{
......
##
# Pagespeed
#
pagespeed On;
pagespeed FileCachePath "/dev/shm/ngx_pagespeed/";
pagespeed XHeaderValue "CACHED BY MISSU.LINK";
pagespeed RewriteLevel PassThrough;
pagespeed EnableFilters combine_css,extend_cache,rewrite_images;
pagespeed EnableFilters rewrite_css,rewrite_javascript;
pagespeed EnableFilters remove_comments,collapse_whitespace;
pagespeed FetchWithGzip on;
#pagespeed CustomFetchHeader Accept-Encoding gzip;

##
# Gzip Settings
##
gzip  on;
gzip_vary on;
gzip_types application/ecmascript;
gzip_types application/javascript;
gzip_types application/json;
gzip_types application/pdf;
gzip_types application/postscript;
gzip_types application/x-javascript;
gzip_types image/svg+xml;
gzip_types text/css;
gzip_types text/csv;
# "gzip_types text/html" is assumed.
gzip_types text/javascript;
gzip_types text/plain;
gzip_types text/xml;
gzip_http_version 1.0;

......
}

###为使用VPS的补充一个虚拟内存不足的解决方法:###

# 1核1G的VPS真心不错, 现在国内把网盘都Kill了... 用这个当网盘其实还是不错的.
cd /
sudo dd if=/dev/zero of=/swapfile bs=1024 count=1024k
dd命令是专门用来从一个文件复制并格式成另一个文件.
这条命令的意思是从"/dev/zero"文件读出内容并存到/swapfile文件中,
块大小为1024Byte,总共 1024 K个块,也就是总共 1024M.
然后设置并开启交换文件:
sudo mkswap /swapfile
sudo swapon /swapfile
free #查看结果

来自:https://missu.link/archives/5.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: