模块:--with-http_stub_status_module
Syntax: stub_status; Default: — Context: server, location
配置
location /nginx_status { stub_status; allow 192.168.0.0/16; allow 127.0.0.1; deny all; }
访问
Active connections: 291 server accepts handled requests 16630948 16630948 31070465 Reading: 6 Writing: 179 Waiting: 106
Active connections: 当前处于活动状态的客户端连接数,包括连接等待空闲连接数。
accepts:统计总值,Nginx自启动后已经接受的客户端请求的总数。
handled:统计总值,Nginx自启动后已经处理完成的客户端请求的总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接。
requests:统计总值,Nginx自启动后客户端发来的总的请求数。
Reading:当前状态,正在读取客户端请求报文首部的连接的连接数。
Writing:当前状态,正在向客户端发送响应报文过程中的连接数。
Waiting:当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于 active –(reading+writing),
第三模块是对nginx 的功能扩展,第三方模块需要在编译安装Nginx 的时候使用参数--add-module=PATH指定路径添加,有的模块是由公司的开发人员针对业务需求定制开发的,有的模块是开源爱好者开发好之后上传到github进行开源的模块,nginx支持第三方模块需要从源码重新编译支持,比如开源的echo模块 https://github.com/openresty/echo-nginx-module
编译安装需要添加模块路径 --add-module=/root/echo-nginx-module
location /main { index index.html; default_type text/html; echo "hello world,main-->"; echo_reset_timer; echo_location /sub1; echo_location /sub2; echo "took $echo_timer_elapsed sec for total."; } location /sub1 { echo_sleep 1; echo sub1; } location /sub2 { echo_sleep 1; echo sub2; }
测试
]# curl http://www.magedu.net/main hello world,main--> sub1 sub2 took 2.006 sec for total.
nginx的变量可以在配置文件中引用,作为功能判断或者日志等场景使用,变量可以分为内置变量和自定义变量,内置变量是由nginx模块自带,通过变量可以获取到众多的与客户端访问相关的值。
使用echo 模块将变量值打印出来
location /about { root /data/nginx/html/pc; index index.html; limit_rate 10240; #try_files $uri /about/default.html; try_files $uri $uri/index1.html $uri.html /default.html; #try_files $uri $uri/index.html $uri.html =489; echo $remote_addr; #存放了客户端的地址,注意是客户端的公网IP,也就是一家人访问一个网站,则会显示为路由器的公网IP。 echo $args; #变量中存放了URL中的指令,例如http://www.magedu.net/main/index.do?id=20190221&partner=search中的id=20190221&partner=search echo $document_root; #保存了针对当前资源的请求的系统根目录,如/apps/nginx/html echo $document_uri; #保存了当前请求中不包含指令的URI,注意是不包含请求的指令,比如 echo $host; #存放了请求的host名称 echo $http_user_agent; #客户端浏览器的详细信息 echo $http_cookie; #客户端的cookie信息 echo $limit_rate; #如果nginx服务器使用limit_rate配置了显示网络速率,则会显示,如果没有设置, 则显示0 echo $remote_port; #客户端请求Nginx服务器时随机打开的端口,这是每个客户端自己的端口 echo $remote_user; #已经经过Auth Basic Module验证的用户名 echo $request_body_file; #做反向代理时发给后端服务器的本地资源的名称 echo $request_method; #请求资源的方式,GET/PUT/DELETE等 echo $request_filename; #当前请求的资源文件的路径名称,由root或alias指令与URI请求生成的文件绝对路径 echo $request_uri; #包含请求参数的原始URI,不包含主机名, echo $scheme; #请求的协议,如ftp,https,http等 echo $server_protocol; #保存了客户端请求资源使用的协议的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等 echo $server_addr; #保存了服务器的IP地址 echo $server_name; #请求的服务器的主机名 echo $server_port; ##请求的服务器的端口号 }
测试访问
谷歌 http://www.magedu.net/about/index.html?id=20190221&partner=search
192.168.64.1 id=20190221&partner=search /data/nginx/html/pc /about/index.html www.magedu.net Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36 GET /data/nginx/html/pc/about/index.html /about/index.html?id=20190221&partner=search http HTTP/1.1 192.168.64.130 www.magedu.net 80
假如需要自定义变量名称和值,使用指令set $variable value;,则方法如下:
Syntax: set $variable value; Default: — Context: server, location, if
set $name magedu; echo $name; set $my_port $server_port; echo $my_port; echo "$server_name:$server_port";