zoukankan      html  css  js  c++  java
  • 给已安装的nginx添加新模块

    有个需求的实现需要通过nginx的ngx_http_realip_module模块,但是这个模块我在安装nginx的时候并没有加上,只有重新编译加上去。我看了一下网上各种博文,基本上就是你抄我,我抄你,有以下这些步骤

    # 1. 下载模块的源码包,假设把模块源码放在/data/software下
    
    # 2. 解压与正在跑的nginx同版本的源码包
    
    # 3. 查看正在跑的nginx编译安装了哪些模块 configure arguments段
    [root@test-1 nginx-1.20.1]# nginx -V
    nginx version: nginx/1.20.1
    built by gcc 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC) 
    built with OpenSSL 1.0.2k-fips  26 Jan 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream --user=nginx
    
    # 4. 使用--add-module加上新的模块,重新初始化
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream --user=nginx --add-mode=/data/software/xxxx
    
    # 5. 编译,不要make install
    make
    
    # 6. 替换nginx二进制文件
    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    cp objs/nginx /usr/local/nginx/sbin/nginx
    
    # 7. 重启
    /usr/local/nginx/sbin/nginx -s reload
    

    我觉得这几个步骤有部分还是有些问题。
    比如:

    1. 第一步下载模块源码,nginx模块并非都是nginx官方开发,源码没有一个统一的路径,找模块源码费时费力。
    2. 第四步使用--add-module加上模块源码位置,再使用make编译的时候,我报错了
    3. 第六步替换是不能直接替换的,因为nginx还在运行,直接替换会报错。大多数博客怕是抄完了都没去试一下。
      cp: cannot create regular file ‘/usr/local/nginx/sbin/nginx’: Text file busy
      

    所以我也不找源码了,直接使用--with方式,这种方式就是把模块编译进nginx的二进制文件。
    我的步骤如下

    # 1. 解压与正在跑的nginx同版本的源码包
    
    # 2. 查看正在跑的nginx编译安装了哪些模块 configure arguments段
    [root@test-1 nginx-1.20.1]# nginx -V
    nginx version: nginx/1.20.1
    built by gcc 9.3.1 20200408 (Red Hat 9.3.1-2) (GCC) 
    built with OpenSSL 1.0.2k-fips  26 Jan 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream --user=nginx
    
    # 3. 重新初始化
    ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-stream --user=nginx --with-http_realip_module
    
    # 4. 编译
    make
    
    # 5. 替换二进制文件并重启nginx
    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    /usr/local/nginx/sbin/nginx -s stop
    cp objs/nginx /usr/local/nginx/sbin/nginx
    /usr/local/nginx/sbin/nginx
    

    我发现这样做同样可以使用新的模块。如果这样做有什么问题或隐患,还请在评论中指正,谢谢。

  • 相关阅读:
    这么香的Chrome插件,你都安装了吗?
    Android frameworks源码StateMachine使用举例及源码解析
    数据结构与算法系列七(队列)
    openoffice下中文乱码问题解决
    linux yum命令详解
    linux下Redis的安装
    ason 和 Java 对象转化示例
    java将office文档pdf文档转换成swf文件在线预览
    MyBatis SQL xml处理小于号与大于号
    Fisher 线性判别
  • 原文地址:https://www.cnblogs.com/CharrammaBlog/p/14918084.html
Copyright © 2011-2022 走看看