跳转至

12. nginx动态模块编译使用

nginx中的动态模块

动态模块可以帮助我们在使用Nginx的时候,在升级Nginx的时候帮助我们减少编译环节,需要时可以进行加载,不需要的时候可以禁止掉

  • nginx编译步骤
      具体使用的时候,主要为6个步骤;
    
      (1):首先,要在nginx的源代码中加入configure 加入动态模块的时候必须指明这个模块是使用动态模块的的方式编译进nginx中;这里有一个潜台词,不是所有的nginx模块都可以以动态模块的方式加入到nginx中;只有一些模块才可以以动态模块的方式加入;
    
      (2):开始执行make,编译出binary;
    
      (3):到第三步的时候,也就是说我们开始启动nginx了;启动nginx的时候尼我们去读ngx_module里的数组;
    
      (4):读到模块数组中尼,我们发现了使用了一个动态模块,接下来我们会看到一个nginx的conf中加入的一个配置项,这个配置项叫load_module配置;指明了这个     动态模块所在的路径,
    
      (5):那么接下来我们就可以在nginx的进程中打开这个动态库加入模块数组,
    
      (6):最后再进行一个初始化的过程(基于模块数组进程初始化);
    
  • 什么样的是动态模块

动态模块并不是所有的模块都可以作为动态模块编译,只有部分是,这种的

[root@localhost nginx-1.14.2]# ./configure --help|grep dynamic
  --with-http_xslt_module=dynamic    enable dynamic ngx_http_xslt_module
  --with-http_image_filter_module=dynamic
                                     enable dynamic ngx_http_image_filter_module
  --with-http_geoip_module=dynamic   enable dynamic ngx_http_geoip_module
  --with-http_perl_module=dynamic    enable dynamic ngx_http_perl_module
  --with-mail=dynamic                enable dynamic POP3/IMAP4/SMTP proxy module
  --with-stream=dynamic              enable dynamic TCP/UDP proxy module
  --with-stream_geoip_module=dynamic enable dynamic ngx_stream_geoip_module
  --add-dynamic-module=PATH          enable dynamic external module
  --with-compat                      dynamic modules compatibility
在编译的时候指定--with-http_image_filter_module=dynamic即可

动态模块编译演示

进入下载的nginx目录,然后解压,进行编译,这里以添加动态模块--with-http_image_filter_module=dynamic模块为例
cd /usr/local/src/nginx-1.14.2
./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module -with-http_image_filter_module=dynamic
make
这里是不需要make install 不然会覆盖原来已经安装好的nginx
在objs目录下将 ngx_http_image_filter_module.so复制到 编译好的nginx目录中新建的modules 目录中
mkdir -p /usr/local/nginx/modules
cp /usr/local/src/nginx-1.14.2/objs/ngx_http_image_filter_module.so /usr/local/nginx/modules/
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_bak
cp /usr/local/src/nginx-1.14.2/objs/nginx /usr/local/nginx/sbin/nginx
在nginx中启用动态模块

打开nginx.conf文件,在最上边加上
load_module modules/ngx_http_image_filter_module.so;
然后对我们访问图片的目录 我们加上 image_filter resize 15 10;  即15*10这个像素;
--with-http_image_filter_module=dynamic 这个模块指实时的把这个图片压缩成更小的一些图片;
    server {
        listen       8011;
        server_name  192.168.94.130;
        location / {

            #alias dlib/;
            #autoindex on;  #生成目录结构
            #set $limit_rate 1k; #限制传输速率单位字节,会访问变慢
            root test;
            image_filter resize 100 5;
            #index  index.html index.htm;
        }
    }
[root@localhost nginx]# ls -l test/
总用量 8
-rw-r--r--. 1 root root 6308 6月  26 14:43 boost.png

参考:https://www.cnblogs.com/zqsb/p/11388889.html