nginx的 ngx.var ngx.ctx ngx.req
ngx.var 是获取 Nginx 的变量,需要经历字符串 hash、hash 表查找等过程。
ngx.ctx 仅仅是一个 Lua table 而已,它的引用存放在 ngx_lua 的模块上下文(ctx_ref)。
使用 ngx.ctx 比 ngx.var 往往是更好的选择。
https://moonbingbing.gitbooks.io/openresty-best-practices/content/openresty/inline_var.html
ngx.var的api
名称 | 说明 |
---|---|
$arg_name | 请求中的name参数 |
$args | 请求中的参数 |
$binary_remote_addr | 远程地址的二进制表示 |
$body_bytes_sent | 已发送的消息体字节数 |
$content_length | HTTP请求信息里的"Content-Length" |
$content_type | 请求信息里的"Content-Type" |
$document_root | 针对当前请求的根路径设置值 |
$document_uri | 与$uri相同; 比如 /test2/test.php |
$host | 请求信息中的"Host",如果请求中没有Host行,则等于设置的服务器名 |
$hostname | 机器名使用 gethostname系统调用的值 |
$http_cookie | cookie 信息 |
$http_referer | 引用地址 |
$http_user_agent | 客户端代理信息 |
$http_via | 最后一个访问服务器的Ip地址。 |
$http_x_forwarded_for | 相当于网络访问路径 |
$is_args | 如果请求行带有参数,返回“?”,否则返回空字符串 |
$limit_rate | 对连接速率的限制 |
$nginx_version | 当前运行的nginx版本号 |
$pid | worker进程的PID |
$query_string | 与$args相同 |
$realpath_root | 按root指令或alias指令算出的当前请求的绝对路径。其中的符号链接都会解析成真是文件路径 |
$remote_addr | 客户端IP地址 |
$remote_port | 客户端端口号 |
$remote_user | 客户端用户名,认证用 |
$request | 用户请求 |
$request_body | 这个变量(0.7.58+)包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有意义 |
$request_body_file | 客户端请求主体信息的临时文件名 |
$request_completion | 如果请求成功,设为"OK";如果请求未完成或者不是一系列请求中最后一部分则设为空 |
$request_filename | 当前请求的文件路径名,比如/opt/nginx/www/test.php |
$request_method | 请求的方法,比如"GET"、"POST"等 |
$request_uri | 请求的URI,带参数 |
$scheme | 所用的协议,比如http或者是https |
$server_addr | 服务器地址,如果没有用listen指明服务器地址,使用这个变量将发起一次系统调用以取得地址(造成资源浪费) |
$server_name | 请求到达的服务器名 |
$server_port | 请求到达的服务器端口号 |
$server_protocol | 请求的协议版本,"HTTP/1.0"或"HTTP/1.1" |
$uri | 请求的URI,可能和最初的值有不同,比如经过重定向之类的 |
===========
ngx.var.request_uri : 是请求的url 去除 https://ip:port 的剩余部分,包含 url传递的 参数。
ngx.var.uri : 是请求的url 去除 https://ip:port 、去除 ? 问号 后面带的参数【包括逗号】,剩余的就是一些 类似 /xxx/xxx/xxx 格式的 uri 。
============
https://www.cnblogs.com/wangxusummer/p/4309007.html
ngx.req 的 api
nginx的 ngx.var ngx.ctx ngx.req的更多相关文章
- OpenResty之ngx.var.VARIABLE
1. ngx.var.VARIABLE syntax: ngx.var.VAR_NAME context: set_by_lua*, rewrite_by_lua*, access_by_lua*, ...
- ngx_lua_API 指令详解(六)ngx.thread.spawn、ngx.thread.wait、ngx.thread.kill介绍
摘要:通过lua-nginx-module中的ngx.thread同时执行多个任务. ngx_lua中访问多个第三方服务 ngx_lua中提供了ngx.socket API,可以方便的访问第三方网络服 ...
- nginx: [error] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)
在重启nginx服务的时候,出现了这个错误. [root@izuf68g6a94fj32w0afx00z etc]# nginx -c /var/run/nginx/nginx.pid nginx: ...
- nginx: [emerg] mkdir() "/var/temp/nginx/client" failed (2: No such file or directory)
报错信息 [root@bogon sbin]# ./nginx nginx: [emerg] mkdir() : No such file or directory) 解决方法 [root@bogon ...
- nginx: [emerg] open() "/var/run/nginx.pid" failed (13: Permission denied)
现象 1.centos6.9 用rpm包安装nginx 2.修改Nginx的多个配置文件和配置项 3.service nginx restart 报错: nginx: [emerg] open() & ...
- nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)
测试服务器 问题描述 [root@g-s-- nginx]# /usr/sbin/nginx -c /etc/nginx/nginx.conf open() : No such file or dir ...
- nginx: [error] open() "/var/run/nginx.pid" failed (2: No such file or directory)
解决办法: nginx nginx -s reload
- 【精选】Nginx模块Lua-Nginx-Module学习笔记(一)Nginx Lua API 接口详解
源码地址:https://github.com/Tinywan/Lua-Nginx-Redis 一.介绍 各种* _by_lua,* _by_lua_block和* _by_lua_file配置指令用 ...
- 初探nginx
nginx nginx是俄罗斯人写的轻量级http服务器,Nginx 以事件驱动的方式编写,有非常好的性能,同时也是一个非常高效的反向代理.负载均衡. Nginx 稳定性高,模块库丰富,配置灵活,系统 ...
随机推荐
- webapi中获取HttpContext
public OperationResultDto APILogin() { LoginModel model = new LoginModel(); HttpContextBase context ...
- 【LG4437】[HNOI/AHOI2018]排列
[LG4437][HNOI/AHOI2018]排列 题面 洛谷 题解 题面里这个毒瘤的东西我们转化一下: 对于\(\forall k,j\),若\(p_k=a_{p_j}\),则\(k<j\). ...
- 关于对STL容器重载运算符的问题
注意:下文中vector数组指的是每个数组元素都是一个vector的数组 大部分有序STL容器都重载了小于号,且比较方式是对容器中元素进行字典序比较. 此时如果你写\(bool\ operator&l ...
- divide two numbers using + opertor
package testpacknm; import java.util.Scanner; public class testcnm { public static void main(String[ ...
- thinkphp5.0 - 安装
1.thinkphp 5.0 可以通过下载,git 等方式安装,我这里采用下载完整版安装,解压到一个目录下就行了 2.配置 web 服务器配置文件,我是用的是 nginx(nginx/1.9.15) ...
- python前后台tcp/udp通讯示例
以下代码兼容python2.7+.python3 TCP示例 服务器 -- sever_tcp.py #!/usr/bin/env python #coding=utf-8 import time i ...
- axios详解
一.说明 Axios是一个基于Promise(ES6中用于处理异步的)的HTTP库(HTTP客户端),用于浏览器和node.js中,API. 浏览器中创建XMLHttpRequests 从node.j ...
- Azure Devops (VSTS) Extensions 开发小记
我在使用tfx-cli打包Azure Devops插件时,输出了很黄很黄很亮瞎眼的(尤其是在Visual Studio Code采用了Dark Black Theme的情况下)警告warning: P ...
- C# API强制关机、重启以及注销计算机
在Windows系统中有2种方式进行关机.重启以及注销计算机操作: 1.使用shutdown()命令:2.使用系统API: 以下是使用系统API进行操作的实例. 程序实例界面: 程序实例代码: 1 u ...
- 使用nodemon提高nodejs调试效率
1.安装 nodemon 直接用npm安装既可,键入命令: npm -g install nodemon .如果不行,检查电脑有没有联网,联网后输入 sudo npm -g install nodem ...