Nginx教程

Nginx-状态页、第三方模块、内置变量

本文主要是介绍Nginx-状态页、第三方模块、内置变量,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

nginx状态页

模块:--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 的功能扩展,第三方模块需要在编译安装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的变量可以在配置文件中引用,作为功能判断或者日志等场景使用,变量可以分为内置变量和自定义变量,内置变量是由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";

 

这篇关于Nginx-状态页、第三方模块、内置变量的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!