网站首页 > 技术教程 正文
在Nginx中变量是一个非常强大的工具。
我们可以在nginx.conf中通过通过变量修改各个模块处理请求的方式,
变量也可以在lua中发挥重大作用。
每个变量可以分为提供变量的模块和使用变量的模块。
提供变量的模块:
相当于是定义变量,及求得变量值的方法(这有点类似读写时间的handler)。
也就是说这里并没有对变量进行解析,因为可能请求都没有来呢。只是定义了规则。
主要方法:
// 文件名 ngx_module.h
static ngx_int_t
ngx_http_core_preconfiguration(ngx_conf_t *cf)
{
return ngx_http_variables_add_core_vars(cf);
}
ngx_int_t
ngx_http_variables_add_core_vars(ngx_conf_t *cf)
{
cmcf->variables_keys->pool = cf->pool;
cmcf->variables_keys->temp_pool = cf->pool;
if (ngx_hash_keys_array_init(cmcf->variables_keys, NGX_HASH_SMALL)
!= NGX_OK)
{
return NGX_ERROR;
}
if (ngx_array_init(&cmcf->prefix_variables, cf->pool, 8,
sizeof(ngx_http_variable_t))
!= NGX_OK)
{
return NGX_ERROR;
}
for (cv = ngx_http_core_variables; cv->name.len; cv++) {
v = ngx_http_add_variable(cf, &cv->name, cv->flags);
if (v == NULL) {
return NGX_ERROR;
}
*v = *cv;
}
return NGX_OK;
}
使用变量的模块:
当请求到来时,运行到了这个模块,可能会根据变量判断返回不同的值。
当用到了变量,就会使用上面定义变量模块里的解析变量的方法来获取变量的值。
再来根据这个值,按照模块本身的逻辑来处理。
变量的特性:
惰性求值:
也就是我们之前说的,使用变量的模块只有在请求接收到的时候,并且在处理http请求11个阶段或过滤模块开始读取这个变量值的时候,才去对这个变量求值。这样会有性能上的提升避免不必要的求值。但是这样也带来了另一个问题。
变量值是随时可能会变化的,比如:limit_rate,每秒可能流量都在变化。对于这种变量只反映使用那一刻的值。
Nginx为了进一步提升变量的性能,还为变量提供了哈希表来存储变量。
猜你喜欢
- 2024-10-11 备战秋招/面试,Nginx学习笔记。金九银十你准备好了吗?
- 2024-10-11 python小课堂37 - 你并没有真正的理解 if name 的作用
- 2024-10-11 「系统架构」Nginx调优之变量的使用(5)
- 2024-09-21 简历上写精通Nginx/OpenResty详解,Nginx的核心原理应该不过分吧
- 2024-09-21 Nginx配置可用参数(nginx 配置参数)
- 2024-09-21 Nginx防盗链配置案例配置详解(nginx防御ddos)
- 2024-09-21 后台服务器老是被勒索多半是没有使用Nginx代理
- 2024-09-21 详解linux多线程——互斥锁、条件变量、读写锁、自旋锁、信号量
你 发表评论:
欢迎- 最近发表
-
- Linux新手必看:几种方法帮你查看CPU核心数量
- linux基础命令之lscpu命令(linux中ls命令的用法)
- Linux lscpu 命令使用详解(linux常用ls命令)
- 如何查询 Linux 中 CPU 的数量?这几个命令要知道!
- 在linux上怎么查看cpu信息(linux如何查看cpu信息)
- 查看 CPU 的命令和磁盘 IO 的命令
- 如何在CentOS7上改变网卡名(centos怎么改网卡名字)
- 网工必备Linux网络管理命令(网工必备linux网络管理命令是什么)
- Linux 网络命令知多少(linux 网络 命令)
- Linux通过命令行连接wifi的方式(linux命令行连接无线网)
- 标签列表
-
- 下划线是什么 (87)
- 精美网站 (58)
- qq登录界面 (90)
- nginx 命令 (82)
- nginx .http (73)
- nginx lua (70)
- nginx 重定向 (68)
- Nginx超时 (65)
- nginx 监控 (57)
- odbc (59)
- rar密码破解工具 (62)
- annotation (71)
- 红黑树 (57)
- 智力题 (62)
- php空间申请 (61)
- 按键精灵 注册码 (69)
- 软件测试报告 (59)
- ntcreatefile (64)
- 闪动文字 (56)
- guid (66)
- abap (63)
- mpeg 2 (65)
- column (63)
- dreamweaver教程 (57)
- excel行列转换 (56)
本文暂时没有评论,来添加一个吧(●'◡'●)