Nginx调试以及输出模块配置
前言
Nginx是一个优秀的服务器框架,但是有时候在我们进行配置的时候,写了很多的规则,这时候我们也不清楚这些规则写对了没有,Nginx按照怎样的流程进行执行的,这时候我们就需要对Nginx进行调试和输出,来看Nginx是否按照预期的流程进行执行。
Nginx-debug
Nginx自带了debug模式,不过需要在安装配置的时候加上
--with-debug
好多用户可能初次安装nginx的时候,没有加--with-debug
参数,这时候,很多用户就会顾虑:如果我重新./configure编译,那我之前安装的nginx的配置文件等等是不是就没了。答案是:不会的,nginx只会进行增量编译。
./configure --prefix=/usr/local/nginx --with-debug
然后在你的配置里这样写:
server{
server_name http://example.com;
error_log /path/to/errorlog/error.log debug;
error_log /path/to/errorlog/error.log debug_http;
}
总得来说,nginx记录日志信息分两个级别,第一个级别的取值为如下之一:
stderr
emerg
alert
crit
error
warn
notice
info
debug
这些值是互斥的,也就是说只能取其中之一。
如果我们指定第一个级别为debug
,那么nginx还允许我们指定第二级别:
debug_core
debug_alloc
debug_mutex
debug_event
debug_http
debug_mail
debug_mysql
第二级别的指定是多选的,因此可以有多条关于第二级别的配置项目:
error_log logs/error.log debug_http;
error_log logs/error.log debug_core;
注意:在且仅在第一个级别为”debug”时才可以有第二级别的配置,其它第一级别情况下指定第二级别将无法启动nginx
echo-nginx-module
-
模块简介
echo模块式国人编写的nginx的第三方模块,下载官方nginx后需要再下载echo模块,并且配合nginx编译安装,安装此模块后可以在nginx的url访问中可以通过echo命令输出字符到用户的浏览器中,可用于检测nginx的可访问性,检测nginx的配置的正确性(这是当前我需要用的nginx的主要功能),可用于打印你希望了解的http代理相关http参数,总之在调试配置nginx环节,echo命令非常有用。
-
安装方法
先去下载Nginx和echo-nginx-module的源码包,然后进行解压,编译。
下载地址分别为
http://nginx.org/download/
https://github.com/openresty/echo-nginx-module/tags
配置的时候使用`add-module`指向`echo-nginx-module`的解压路径目录即可。
./configure --prefix=/usr/local/nginx --add-module=/usr/local/echo-nginx-module
make && make install
-
使用方法
location / {
echo "hello world!"
}
注意点:
1. echo命令只能放在url请求中,如果放在url请求外,会报错
2. 一次url请求,echo 只能打印一行
3. 如果echo后边有配置`return `或者配置 `proxy_pass`或者`rewrite`,则echo的输出会
被覆盖,即浏览器无法看到echo的内容
4. echo的内容不是写在nginx的配置文件中,而是输出到浏览器中,所以echo的打印字符的查看
请在浏览器中查看,或者使用curl查看