echo模块是国人编写的nginx的第三方模块,下载官方nginx后需要再下载echo模块,并且配合nginx编译安装,安装此模块后可以在nginx的url访问中可以通过echo命令输出字符到用户的浏览器中,可用于检测nginx的可访问性,检测nginx的配置的正确性(这是当前我需要用的nginx的主要功能),可用于打印你希望了解的http代理相关http参数,总之在调试配置nginx环节,echo命令非常有用。
详情见:http://www.oschina.net/question/12_45735
2.nginx的echo安装
安装第三方模块的时候不能使用rpm以及yum方式安装nginx,如果以前用以上方式安装过nginx的话,请先卸载掉。
2.1 我们下载nginx的源码包(http://nginx.org/download/nginx-1.2.7.tar.gz)以及echo模块的源码包(https://github.com/agentzh/echo-nginx-module/tags)选择最新版本
2.2 分别加压nginx源码包以及echo模块源码包,例如此处我解压的路径为:nginx的路径:/opt/nginx-source ;echo模块的路径:/opt/nginx-echo-source
2.3 命令cd进入nginx源码路径,此处:cd /opt/nginx-source ;
2.4 配置nginx编译文件,执行编译配置命令:./configure --prefix=/opt/nginx --add-module=/opt/nginx-echo-source
配置时屏幕会输出日志,检查配置过程中是否有error,如果有请自行修复,一般是缺少类库,缺少啥类库,就下载安装什么类库
2.5 编译nginx,在nginx源码目录中执行命令: make
2.6 编译安装nginx,在nginx 源码目录中执行命令:make install
3.nginx的echo使用测试
配置nginx的配置文件
server {
listen 8083;
server_name _;
access_log /var/log/nginx/cn-camm.server.access.log main; set $tag "0";
if ( $host !~ ^appbuilder.vicp.cc$ ){
set $tag "$tag,1";
}
if ( $host !~ ^localhost$ ){
set $tag "$tag,2";
}
if ( $tag ~ ^0,1,2$ ){
return 403;
}
location / {
echo "can act?";
if ($host != '192.168.1.250' ) {
echo "not equal 250";
# return 403;
}
echo "asdfasdf";
# proxy_pass http://cncamm;
# proxy_set_header Host $host:8083;
}
}
配置时注意
1.echo命令只能放在url请求中,如果放在url请求外,会报错 如果报[emerg]: "echo" directive is not allowed here in ,请检查echo放置的位置
2.一次url请求,echo 只能打印一行,如果有逻辑判断,且判断成功,则echo会执行判断成功里边的echo,否则执行最后一句echo(此处不一定正确,在测试中发现是此现象)
3.如果echo后边有配置return 或者配置 proxy_pass,则echo的输出会被覆盖,即浏览器无法看到echo的内容
4.echo的内容不是写在nginx的配置文件中,而是输出到浏览器中,所以echo的打印字符的查看请在浏览器中查看
声明: 此文观点不代表本站立场;转载须要保留原文链接;版权疑问请联系我们。