系列简介
该段来自于博客的开篇:
大多数 Nginx 新手都会频繁遇到这样一个困惑,那就是当同一个 location 配置块使用了多个 Nginx 模块的配置指令时,这些指令的执行顺序很可能会跟它们的书写顺序大相径庭。于是许多人选择了“试错法”,然后他们的配置文件就时常被改得一片狼藉。
这个系列的教程就旨在帮助读者逐步地理解这些配置指令背后的执行时间和先后顺序的奥秘。
概览
由于工作需要,需要学习Nginx的相关知识,特地开了这个系列来做学习笔记。
主要的学习内容将来自于agentzh的博客
该篇为第一篇
安装echo模块
-前提:已经有Nginx服务,需要额外安装echo模块
安装教程可以看:Nginx在已安装的情况下新增 echo 模块
最重要的是要注意这两个命令
# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old
# cp -f objs/nginx /usr/local/nginx/sbin/nginx
第一个命令是备份;第二个命令很关键,将新编译的Nginx服务覆盖原有的Nginx服务。如果没有覆盖原有Nginx服务,可能会导致
- Nginx报错unknown directive "echo"
- 无法使用类似于service nginx restart这种自定义Nginx命令
注意,在第一篇文章中,需要额外安装echo模块,也需要打开Nginx 的 debug日志级别
./configure --with-debug
建议一起操作
使用curl命令测试
curl命令简介:Linux curl命令详解
先使用以下命令查看localhost是否解析到127.0.0.1;如果本地解析前面有“#”号,删除保存即可
# cat /etc/hosts
小结
- set命令作用于rewrite阶段
- ngx_echo作用于content阶段
- ngx_echo之所以输出三行,是因为最后一行为输出指示响应体末尾的结束标记
- 在NG中输出响应体数据,都会调用NG的输出过滤器(output filter)