linux 下 nginx 安装echo扩展模块

nginx 在linux(ubuntu 16.0.4) 安装echo模块

echo 模块可以将nginx 变量的信息输出到网页中。echo 模块对学习nginx 配置文件有很大帮助,对应调试nginx
配置文件中变量特步方便。想要深入学习nginx 配置文件,可以试一下。

  • 下载扩展模块
    cd /newhome/nginx/nginx-1.13.0
    wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
    tar zvxf v0.61.tar.gz

扩展模块下载到任何位置都是可以的,需要在configure 的过程引用到解压地址

  • nginx源码下的configure和编译
    没有源码同学请先下载linux nginx 源码 源码地址 https://nginx.org/en/download.html

    • 第一步 ./configure --add-module=/newhome/nginx/nginx-1.13.0/echo-nginx-module-0.61
      或者 ./configure --add-dynamic-module=/newhome/nginx/nginx-1.13.0/echo-nginx-module-0.61

    自定义解压路径替换/newhome/nginx/nginx-1.13.0/
    由于我没有显示指明-–prefix=安装路径,所以nginx会使用默认安装路径/usr/local/nginx
    所有文件默认安装路径

    nginx path prefix: "/usr/local/nginx"
    nginx binary file: "/usr/local/nginx/sbin/nginx"
    nginx modules path: "/usr/local/nginx/modules"
    nginx configuration prefix: "/usr/local/nginx/conf"
    nginx configuration file: "/usr/local/nginx/conf/nginx.conf"
    nginx pid file: "/usr/local/nginx/logs/nginx.pid"
    nginx error log file: "/usr/local/nginx/logs/error.log"
    nginx http access log file: "/usr/local/nginx/logs/access.log"
    

    --add-module是静态添加模块
    --add-dynamic-module 是动态添加模块,需要在linux 版本1.19.11以后支持,
    可以通过配置文件是否启用该模块 load_module=*.so

    • 第二步
      make
    • 第三步 如果想要重新安装请执行make install

    不想执行将编译出来nginx 二进制 则可以用替换的方式。

    替换/usr/local/nginx/sbin/下 nginx 二进制
    rm -rf /usr/local/nginx/sbin/nginx
    cp ./objs/nginx /usr/local/nginx/sbin/

    ps : 虽然说是重新安装,但是我执行过make install之后,并没有把我的/usr/local/nginx/conf/nginx.conf 替换成新的。
    我只改过/usr/local/nginx/conf/nginx.conf配置所有重新安装还是copy对我没有啥影响。后来阅读make install代码是发现

    test -f '$(DESTDIR)/usr/local/nginx/conf/nginx.conf' \
    	|| cp conf/nginx.conf '$(DESTDIR)/usr/local/nginx/conf/nginx.conf'
    cp conf/nginx.conf '$(DESTDIR)/usr/local/nginx/conf/nginx.conf.default'
    

    不是很懂…如果哪位同学明白知道原因可以告诉我…

  • 检验 /usr/local/nginx/sbin/nginx -V

root@VM-0-13-ubuntu:/usr/local/nginx/sbin# ./nginx -V
nginx version: nginx/1.13.0
built by gcc 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.5) 
configure arguments: --add-dynamic-module=/newhome/nginx/nginx-1.13.0/echo-nginx-module-0.61

可以看到--add-dynamic-module=/newhome/nginx/nginx-1.13.0/echo-nginx-module-0.61 动态模块已经被添加上了

  • 如果是 --add-dynamic-module则添加 在nginx.conf 中添加 load_module modules/ngx_http_echo_module.so;表示启用这个模块如果不想启用,则不添加。
  • 如果是 --add-module 则不用添加直接重启即可,所有模块都会被加载。
  • 如果nginx 已经启动,请用./nginx -s stop 停止后,再启动或者别的重启nginx的方式,不要 ./nginx -s reload 重新加载配置文件,否则echo 模块不生效。

echo 模块基本使用

hello world

    location /hello {
     echo hello world;
     echo "hello world";
     echo $request_uri; ##输出请求路径uri
   }

延迟后输出

location /echo_with_sleep {
     echo hello;
     echo_sleep   2.5;  # in sec
     echo world;
   }

重复输出

 location /duphello {
     echo_duplicate 1000 'hello';
   }

处理请求前后加入内容

location = /api/proxy_before_after {
    echo_before_body before;
    proxy_pass http://127.0.0.1:8090;
    echo_after_body after;
}

你可能感兴趣的:(nginx,linux)