测试方式

将测试写在tmp.lua中,用content_by_lua_file指令导入即可

 server {listen       80;server_name  localhost;location / {stub_status on;default_type text/html;content_by_lua_file /usr/local/openresty/lualib/luatest/tmp.lua;}}

测试的时候将命令放入tmp.lua即可,如下

ngx.say(ngx.var.request_method)

之后重新加载openresty并刷新网页就可以看到结果

openresty -c ../myconf/nginx.conf -s reload

OpenResty-ngx.var变量

$arg_name
请求中的的参数名,即“?”后面的arg_name=arg_value形式的arg_name$args
请求中的参数值

$binary_remote_addr
客户端地址的二进制形式, 固定长度为4个字节

$body_bytes_sent
传输给客户端的字节数,响应头不计算在内;这个变量和Apache的mod_log_config模块中的“%B”参数保持兼容

$bytes_sent
传输给客户端的字节数 (1.3.8, 1.2.5)

$connection
TCP连接的序列号 (1.3.8, 1.2.5)

$connection_requests
TCP连接当前的请求数量 (1.3.8, 1.2.5)

$content_length
“Content-Length” 请求头字段

$content_type
“Content-Type” 请求头字段

$cookie_name
cookie名称

$document_root
当前请求的文档根目录或别名

$document_uri
同 $uri

$host

优先级如下:HTTP请求行的主机名>”HOST”请求头字段>符合请求的服务器名

ngx.say("ngx.var.host:"..ngx.var.host)

$hostname

主机名

httpname匹配任意请求头字段;变量名中的后半部分“name”可以替换成任意请求头字段,如在配置文件中需要获取http请求头:“Accept−Language”,那么将“-”替换为下划线,大写字母替换为小写,形如:http_name 匹配任意请求头字段; 变量名中的后半部分“name”可以替换成任意请求头字段,如在配置文件中需要获取http请求头:“Accept-Language”,那么将“-”替换为下划线,大写字母替换为小写,形如:httpn​ame匹配任意请求头字段;变量名中的后半部分“name”可以替换成任意请求头字段,如在配置文件中需要获取http请求头:“Accept−Language”,那么将“-”替换为下划线,大写字母替换为小写,形如:http_accept_language即可。

$https
如果开启了SSL安全模式,值为“on”,否则为空字符串。

$is_args
如果请求中有参数,值为“?”,否则为空字符串。

$limit_rate
用于设置响应的速度限制,详见 limit_rate。

$msec
当前的Unix时间戳 (1.3.9, 1.2.6)

$nginx_version

nginx版本

ngx.say("ngx.var.nginx_version:"..ngx.var.nginx_version)

$pid

工作进程的PID

ngx.say("ngx.var.pid:"..ngx.var.pid)

$pipe
如果请求来自管道通信,值为“p”,否则为“.” (1.3.12, 1.2.7)

$proxy_protocol_addr
获取代理访问服务器的客户端地址,如果是直接访问,该值为空字符串。(1.5.12)

$query_string
同 $args

$realpath_root
当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径。

$remote_addr
客户端地址$remote_port
客户端端口$remote_user
用于HTTP基础认证服务的用户名

测试

ngx.say("ngx.var.remote_port:"..ngx.var.remote_port)
ngx.say("ngx.var.remote_addr:"..ngx.var.remote_addr)

结果就是访问nginx服务器的本机的ip和端口号

ngx.var.remote_port:56219
ngx.var.remote_addr:192.168.x0.1

$request
代表客户端的请求地址

$request_body
客户端的请求主体
此变量可在location中使用,将请求主体通过proxy_pass, fastcgi_pass, uwsgi_pass, 和 scgi_pass传递给下一级的代理服务器。

$request_body_file
将客户端请求主体保存在临时文件中。文件处理结束后,此文件需删除。如果需要之一开启此功能,需要设置client_body_in_file_only。如果将次文件传递给后端的代理服务器,需要禁用request body,即设置proxy_pass_request_body off,fastcgi_pass_request_body off, uwsgi_pass_request_body off, or scgi_pass_request_body off 。

$request_completion
如果请求成功,值为”OK”,如果请求未完成或者请求不是一个范围请求的最后一部分,则为空。

$request_filename
当前连接请求的文件路径,由root或alias指令与URI请求生成。

$request_length
请求的长度 (包括请求的地址, http请求头和请求主体) (1.3.12, 1.2.7)

$request_method
HTTP请求方法,通常为“GET”或“POST”

$request_time
处理客户端请求使用的时间 (1.3.9, 1.2.6); 从读取客户端的第一个字节开始计时。

requesturi这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看request_uri 这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看requestu​ri这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看uri更改或重写URI,不包含主机名,例如:”/cnphp/test.php?arg=freemouse”。

$scheme
请求使用的Web协议, “http” 或 “https”

senthttpname可以设置任意http响应头字段;变量名中的后半部分“name”可以替换成任意响应头字段,如需要设置响应头Content−length,那么将“-”替换为下划线,大写字母替换为小写,形如:sent_http_name 可以设置任意http响应头字段; 变量名中的后半部分“name”可以替换成任意响应头字段,如需要设置响应头Content-length,那么将“-”替换为下划线,大写字母替换为小写,形如:senth​ttpn​ame可以设置任意http响应头字段;变量名中的后半部分“name”可以替换成任意响应头字段,如需要设置响应头Content−length,那么将“-”替换为下划线,大写字母替换为小写,形如:sent_http_content_length 4096即可。

nginx服务器相关信息查询

nginx是个http服务器,如果想知道服务器相关的信息,就可以查以下内容

$server_addr
服务器端地址,需要注意的是:为了避免访问linux系统内核,应将ip地址提前设置在配置文件中。
$server_name
服务器名,www.cnphp.info$server_port
服务器端口$server_protocol
服务器的HTTP版本, 通常为 “HTTP/1.0” 或 “HTTP/1.1”

测试

ngx.say("ngx.var.server_addr:"..ngx.var.server_addr)
ngx.say("ngx.var.server_name:"..ngx.var.server_name)
ngx.say("ngx.var.server_port:"..ngx.var.server_port)
ngx.say("ngx.var.server_protocol:"..ngx.var.server_protocol)

结果

ngx.var.server_addr:192.168.xx.101
ngx.var.server_name:localhost
ngx.var.server_port:80
ngx.var.server_protocol:HTTP/1.1

$status
HTTP响应代码 (1.3.2, 1.2.2)

$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space
客户端TCP连接的具体信息

$time_iso8601
服务器时间的ISO 8610格式 (1.3.12, 1.2.7)

$time_local
服务器时间(LOG Format 格式) (1.3.12, 1.2.7)

uri请求中的当前URI(不带请求参数,参数位于uri 请求中的当前URI(不带请求参数,参数位于uri请求中的当前URI(不带请求参数,参数位于args),可以不同于浏览器传递的requesturi的值,它可以通过内部重定向,或者使用index指令进行修改,request_uri的值,它可以通过内部重定向,或者使用index指令进行修改,requestu​ri的值,它可以通过内部重定向,或者使用index指令进行修改,uri不包含主机名,如”/foo/bar.html”。

总结

  • 就是在ngx.var后面跟上需要查询的信息就可以,关键是知道每个变量的意思是什么

OpenResty-ngx.var变量相关推荐

  1. ngx.var与ngx.ctx的区别

    ngx.var ngx.var 需预定义方可使用, 一般都写在 ngx 或 openresty 的conf 内 ngx.var: 在conf内可以使用set 方式创建变量: ngx.var 可以定义在 ...

  2. nginx变量ngx.var

    ngx.var 是获取 Nginx 的变量,类型是字符串或nil,需要经历字符串 hash.hash 表查找等过程. ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lu ...

  3. nginx的 ngx.var ngx.ctx ngx.req

    ngx.var 是获取 Nginx 的变量,需要经历字符串 hash.hash 表查找等过程 ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lua 的模块上下文(ctx ...

  4. openresty 内置变量

    openresty 内置变量 官网:http://nginx.org/en/docs/varindex.html 常用内置变量 openresty 获取nginx的内置变量 nginx 内置变量:$a ...

  5. javascript var变量删除

    var有三种声明的情形: var声明的全局变量 var在函数范围内声明的局部变量 eval中声明的全局变量. 首先, 1.2种情形var声明的变量是无法删除的. 尽管var声明的全局变量是属于wind ...

  6. openresty读取环境变量

    全局配置中定义env events{... }env BPM_SERVICE_HOST; env BPM_SERVICE_PORT; service中获取 set_by_lua $bpm_host ' ...

  7. JavaScript里的var变量

    最近学了一点HTML和JavaScript. 在JavaScript里面有var变量,而且好像只有var变量.换句话说var就是个万精油,他没有确定的类型,他的类型取决于赋值给他的变量的类型.例如: ...

  8. DAX学习-同一表上的多层嵌套上下文EARLIER当前行与VAR变量

    此文档为学习笔记,原课程为孙兴华老师的DAX课程,详见:https://www.bilibili.com/video/BV1YE411E7p3/?p=16&spm_id_from=pageDr ...

  9. python抓取script VAR变量

    因工作需要对一个脚本里的var变量进行提取,看了很多教程,安装了一堆的库lxml.bs4.json,后来发现都没有用,最基本的re和requests就够了,先上var所在script 内容 <s ...

最新文章

  1. VMware虚拟机安装之后,打开时找不到启动Centos的界面
  2. Deseq2的理论基础
  3. Loopback測试软件AX1用户手冊 V3.1
  4. ps -ef 两个pid_ps -ef 与 aux
  5. linux系统汇总的qt,QT 编程总结_Linux编程_Linux公社-Linux系统门户网站
  6. File转换成MultiPartFile
  7. 不要再闲玩啦!博主手把手带你两个月入门自然语言处理,还不赶紧碗里来!...
  8. Linux 进程热升级 共享库的动态替换
  9. 蚂蚁财富号:大、小型基金公司的电商业务对比
  10. android中横向滑动功能,Android开发基于ViewPager+GridView实现仿大众点评横向滑动功能...
  11. python定期自动运行_令人惊叹的8个Python新手工具
  12. mysql安装可视化界面_MySQL的下载、安装配置、连接可视化界面。
  13. JavaCV入门教程目录(JavaCV从入门到实战,JavaCV指南手册,免费JavaCV教程)
  14. 机房收费系统可行性研究报告
  15. MATLAB读txt
  16. 超级计算机计算峰值,世界运算最快计算机,中国神威·太湖之光(其峰值计算速度达每秒1...
  17. [Codeup]1814 问题 A: 剩下的树
  18. Android开发学习—指纹识别系统的原理与使用
  19. 简单几行代码带你爬取王者荣耀皮肤
  20. ES-07-ElasticSearch常用插件

热门文章

  1. python学习_Python学习资料整理
  2. 运算符的优先级及有哪些运算符
  3. python小爬虫—获取学校教务处成绩
  4. vc浏览器_自主创业项目推荐,晨兴资本刘芹:我的市场非共识+超配投资原则VC洞见...
  5. composer全局 linux_Linux下全局安装composer方法
  6. python is beautiful_python自动化报告BeautifulReport用法
  7. windows找不到文件gpedit.msc_极简技术|电脑文件全搜索,没有找不到的东西
  8. html 目录生成器,Tocify:动态节点目录菜单生成器_html/css_WEB-ITnose
  9. 版本差异_终极版!三星Note20系列在真机再曝光,不同版本差异在这几点
  10. c语言libjpeg处理图像,解决使用 libjpeg 保存图片时因磁盘写入失败导致程序退出的有关问题...