67677新澳门手机版 > 服务器&运维 > Linux下Nginx的安装、升级及动态添加模块
Linux下Nginx的安装、升级及动态添加模块
2020-03-20 16:54

系统基于ubuntu server 14.04.4 amd64

说明:
已经安装好的nginx,需要添加一个未被编译安装的模块,需要怎么弄呢?

原已经安装好的nginx,现在需要添加一个未被编译安装的模块:

安装

具体:
这里以安装第三方ngx_http_google_filter_module模块为例
nginx的模块是需要重新编译nginx,而不是像apache一样配置文件引用.so

nginx -V 可以查看原来编译时都带了哪些参数

第一步 下载并解压Nginx压缩包

从Nginx官网下载Nginx,或者在Linux上执行wget http://nginx.org/download/nginx-1.10.1.tar.gz命令直接下载
解压nginx-1.10.1.tar.gz文件:

tar zxvf nginx-1.10.1.tar.gz
  1. 下载第三方扩展模块ngx_http_google_filter_module
    # cd /data/software/
    # git clone

  2. 查看nginx编译安装时安装了哪些模块
    # nginx -V
    nginx version: nginx/1.8.0
    built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC)
    built with OpenSSL 1.0.1e-fips 11 Feb 2013
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=/data/software/ngx_http_substitutions_filter_module

原来的参数:
--prefix=/app/nginx

第二步 配置

cd nginx-1.10.1
./configure --prefix=/usr/local/nginx

注意:

① 如果之前没有安装C compiler(C 编译器),这一步将报如下错误信息:

xueliang@dev:~/download/nginx-1.10.1$ ./configure –prefix=/usr/local/nginx
checking for OS

  • Linux 4.2.0-27-generic x86_64
    checking for C compiler … not found

./configure: error: C compiler cc is not found

xueliang@dev:~/download/nginx-1.10.1$

可以参考这篇文章安装C compiler,然后继续下面的操作

② 如果之前没有安装PCRE,这一步将报如下错误信息:

checking for PCRE library … not found
checking for PCRE library in /usr/local/ … not found
checking for PCRE library in /usr/include/pcre/ … not found
checking for PCRE library in /usr/pkg/ … not found
checking for PCRE library in /opt/local/ … not found

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using –without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using –with-pcre= option.

xueliang@dev:~/download/nginx-1.10.1$

可以参考这篇文章安装PCRE,然后继续下面的操作

③ 如果之前没有安装zlib,这一步将报如下错误信息:

checking for md5 in system md library … not found
checking for md5 in system md5 library … not found
checking for md5 in system OpenSSL crypto library … not found
checking for sha1 in system md library … not found
checking for sha1 in system OpenSSL crypto library … not found
checking for zlib library … not found

./configure: error: the HTTP gzip module requires the zlib library.
You can either disable the module by using –without-http_gzip_module
option, or install the zlib library into the system, or build the zlib library
statically from the source with nginx by using –with-zlib= option.

xueliang@dev:~/download/nginx-1.10.1$

可以参考这篇文章安装zlib,然后继续下面的操作

也可以跳过此步,执行默认安装,--prefix的默认值为/usr/local/nginx,Nginx官网对此有说明:Building nginx from Sources

可以看出编译安装使用了--prefix=/usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=/data/software/ngx_http_substitutions_filter_module这些参数。--add-module=/data/software/ngx_http_substitutions_filter_module是之前编译添加ngx_http_substitutions_filter_module模块时添加

添加的参数:
--with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

第三步 编译

make

3. 加入需要安装的模块,重新编译,如这里添加–add-module=/data/software/ngx_http_google_filter_module
# ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_sub_module --with-http_gzip_static_module --with-http_stub_status_module --add-module=/data/software/ngx_http_substitutions_filter_module --add-module=/data/software/ngx_http_google_filter_module
# make    //千万不要make install,不然就真的覆盖了

步骤如下:

第四步 完成安装

sudo make install
  1. 替换nginx二进制文件:
    # cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    # cp ./objs/nginx /usr/local/nginx/sbin/
  1. 使用参数重新配置:
    ./configure --prefix=/app/nginx -user=nobody -group=nobody --with-http_stub_status_module
    --with-http_ssl_module --with-http_realip_module
    --add-module=../nginx_upstream_hash-0.3.1/
    --add-module=../gnosek-nginx-upstream-fair-2131c73/
  2. 编译:
    make
    #不要make install,否则就是覆盖安装
  3. 替换nginx二进制文件:
    cp /app/nginx/sbin/nginx /app/nginx/sbin/nginx.bak
    cp ./objs/nginx /app/nginx/sbin/

平滑升级

当需要对正在运行的Nginx进行升级时,可以在不停止Nginx的情况下,使用新版本或者重编译的可执行程序替换旧版本的可执行程序,这里我们从nginx-1.10.1升级到nginx-1.11.1

本文永久更新链接地址

with-http_realip_module:有些网站使用这样的方式来搭建分布式缓存,若干台Squid放在前面提供缓存服务,内容从后面的 Nginx获取。不过如此一来,Nginx日志里看到的IP就是Squid的IP了,为了能让Nginx透明获取IP,可以使用 NginxHttpRealIpModule。

上一篇:没有了 下一篇:没有了