nginx echo 输出 检查配置正确性

nginx echo 输出 检查配置正确性

作者:fenlei5   2023-10-06 02:36:53  

详情

原文地址:/content/13/0322/11/


的echo模块的介绍

echo模块式国人编写的nginx的第三方模块,下载官方nginx后需要再下载echo模块,并且配合nginx编译安装,安装此模块后可以在nginx的url访问中可以通过echo命令输出字符到用户的浏览器中,可用于检测nginx的可访问性,检测nginx的配置的正确性(这是当前我需要用的nginx的主要功能),可用于打印你希望了解的http代理相关http参数,总之在调试配置nginx环节,echo命令非常有用。
详情见:/d/file/img/13/z1s3xbt4wkn

的echo安装
安装第三方模块的时候不能使用rpm以及yum方式安装nginx,如果以前用以上方式安装过nginx的话,请先卸载掉。
我们下载nginx的源码包(/download/nginx-.)以及echo模块的源码包(/agentzh/echo-nginx-module/tags)选择最新版本
分别加压nginx源码包以及echo模块源码包,例如此处我解压的路径为:nginx的路径:/opt/nginx-source ;echo模块的路径:/opt/nginx-echo-source
命令cd进入nginx源码路径,此处:cd /opt/nginx-source ;
配置nginx编译文件,执行编译配置命令: ./configure --prefix=/opt/nginx --add-module= /opt/nginx-echo-source
配置时屏幕会输出日志,检查配置过程中是否有error,如果有请自行修复,一般是缺少类库,缺少啥类库,就下载安装什么类库
编译nginx,在nginx源码目录中执行命令: make
编译安装nginx,在nginx 源码目录中执行命令:make install

的echo使用测试
配置nginx的配置文件
server {
listen 8083;
server_name _;
access_log /var/log/nginx/cn-.log main;

set $tag "0";

if ( $host !~ ^$ ){
set $tag "$tag,1";
}

if ( $host !~ ^localhost$ ){
set $tag "$tag,2";
}
if ( $tag ~ ^0,1,2$ ){
return 403;
}


location / {




echo "can act?";
if ($host != '.250' ) {
echo "not equal 250";
# return 403;
}

echo "asdfasdf";

# proxy_pass http://cncamm;
# proxy_set_header Host $host:8083;
}

}


配置时注意
命令只能放在url请求中,如果放在url请求外,会报错 如果报[emerg]: " echo" directive is not allowed here in ,请检查echo放置的位置
2.一次url请求,echo 只能打印一行,如果有逻辑判断,且判断成功,则echo会执行判断成功里边的echo,否则执行最后一句echo(此处不一定正确,在测试中发现是此现象)
3.如果echo后边有配置return 或者配置 proxy_pass,则echo的输出会被覆盖,即浏览器无法看到echo的内容

的内容不是写在nginx的配置文件中,而是输出到浏览器中,所以echo的打印字符的查看请在浏览器中查看


我自己试的时候,最后有一句 content_by_lua "(200)", 在这之前的 echo 语句一直不执行,后来我在echo外面加了一个 if 语句,就能执行了,把 content_by_lua "(200)" 语句删掉后,echo 也能正确执行。

请在电脑上注册登陆