安装和使用echo-nginx-module模块

在配置和调试nginx.conf中的location时,有一个非常有用的模块可以安装,
那就是echo-nginx-module,它可以在location中直接使用类似linux shell命令echo一样的指令,帮助验证location配置是否符合预期。我在配置location的过程中,就遇到过奇怪的问题,最后发现因为代码走错了location。

  • 下载nginx源码

    mkdir nginx_1_12_1
    git clone https://github.com/nginx/nginx/tree/branches/stable-1.12
  • 使用默认选项配置,编译,安装nginx

    ./configure
    sudo make
    sudo make install

    一切正常的话,会在/usr/local/nginx目录下安装好nginx.
    使用下面命令启动nginx.

    cd /usr/local/nginx/sbin
    ./nginx

    如果启动正常的话,可以查看到nginx启动了两个进程,master和worker进程。

    root@rex-VirtualBox:/usr/local/nginx/sbin# ps ax|grep "nginx"
    6347 ?        Ss     0:00 nginx: master process ./nginx
    6498 ?        S      0:00 nginx: worker process
    6803 pts/2    S+     0:00 grep --color=auto nginx
    
  • 打开浏览器,输入127.0.0.1,可以看到nginx的欢迎页面。

    这里写图片描述

  • 下载echo-nginx-module模块,这里我把它作为我nginx仓库的一个子模块来管理。

    cd nginx_1_12_1
    git submodule add git@github.com:openresty/echo-nginx-module.git
  • 重新配置nginx,把echo-nginx-module模块编译进nginx可执行文件

    sudo ./configure --add-module=echo-nginx-module
    sudo make
    sudo make install
  • 修改/usr/local/nginx/conf/nginx.conf, 在server块中增加下面语句

        location /hello {                                                                                                           
            echo -n "hello, ";
            echo "world!";
        }
        location /timed_hello {
            echo_reset_timer;
            echo_sleep 1.4;
            echo hello world;
            echo "'hello world' takes about $echo_timer_elapsed sec.";
            echo_reset_timer;
            echo hiya igor;
            echo "'hiya igor' takes about $echo_timer_elapsed sec.";
        }   
    
  • 重新加载nginx的配置运行

    cd /usr/local/nginx/sbin
    nginx -s reload
  • 测试echo-nginx-module

    rex@rex-VirtualBox:~/work/nginx_1_12_1$ curl  http://127.0.0.1/hello
    hello, world!
    rex@rex-VirtualBox:~/work/nginx_1_12_1$ curl  http://127.0.0.1/timed_hello
    hello world
    'hello world' takes about 1.402 sec.
    hiya igor
    'hiya igor' takes about 0.000 sec.

    从这个简单的demo中,就有两个echo-nginx-module的使用场景,

    • 使用echo指令,可以直观地查看到调用不同的URL及对应的location
    • 可以利用echo_reset_timer指令和变量echo_timer_elapsed,方便地进行计时,这样就可以对某些命令对执行时间进行衡量。

    当然,我相信echo-nginx-module有更多的用途,具体执行的说明可以参考官方网站。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值