WEB服务与NGINX(12)-NGINX的变量
1. nginx的变量
nginx的变量可以在配置文件中引用,作为功能判断或日志等场景使用,变量可以分为内置变量和自定义变量。
内置变量的官方查看地址为:http://nginx.org/en/docs/varindex.html
1.1 内置变量
内置变量由nginx模块自带,通过变量可以获取到众多的与客户端访问相关的属性值。
| 变量名称 | 意义 |
|---|---|
| $remote_addr | 客户端ip地址,指的是公网IP地址 |
| $remote_user | 客户端验证的用户名 |
| $remote_port | 客户端请求nginx时随机打开的端口,指客户端端口 |
| $http_user_agent | 客户端浏览器类型 |
| $request | 客户端请求报文的完整信息,例如:GET /image/ HTTP/1.1 |
| $document_uri | 存放了请求的URL中不包含指令的URI部分,例如http://www,baidu.com/index.do?id=20200101&partner=search中的/index.do |
| $document_root | 当前请求的资源的系统根目录,即root定义的目录 |
| $request_filename | 当前请求的资源文件的路径名称,指的是在服务器磁盘上的绝对路径 |
| \(request_uri | 包含请求参数的原始URI,不包含主机名,例如http://www,baidu.com/index.do?id=20200101&partner=search中的/index.do?id=20200101&partner=search,与\)uri相同 | |
| $args | 存放了URL中的指令,例如http://www,baidu.com/index.do?id=20200101&partner=search中的id=20200101&partner=search |
| $request_method | 请求资源的方法,GET/PUT等 |
| $host | 存放了请求报文中请求的host名称,即域名 |
| $request_time | 请求处理时间(以秒为单位),分辨率为毫秒;从客户端读取第一个字节与发送最后一个字节后的日志写入之间的时间 |
| $request_length | 请求报文长度(包括请求行、标头和请求正文) |
| $request_body_file | 做反向代理时发给后端服务器的本地资源的名称 |
| $http_cookie | 客户端的cookie信息 |
| $scheme | 请求的协议,如http,https等 |
| $server_protocol | 保存了客户端请求资源使用的协议版本,如HTTP/1.0 HTTP/2.0 HTTP/1.1 |
| $server_addr | 保存了服务器的IP地址 |
| $server_name | 请求的服务器的主机名 |
| $server_port | 请求的服务器的端口号 |
| $status | 状态码 |
| $body_bytes_sent | 应答报文body部分的大小 |
| $bytes_sent | 发送给客户端的字节数 |
| $time_local | 当前本地的系统时间 |
| $time_iso8601 | 本地时间,ISO 8601标准格式 |
| $msec | 以毫秒表示写入时间 |
| $http_x_forwarded_for | 进行反向代理后,客户端的真实IP地址。 |
| $http_referer | 表示从哪个页面跳转过来的 |
| $gzip_ratio | 压缩比 |
| $connection_requests | 通过一个连接共请求的当前请求数(1.1.18) |
| $connection | 连接序列号 |
1.2 自定义变量
set $variable value
Context:sever,http,location
声明变量的内容,注意nginx中的变量必须都以$开头。
支持把一个变量的值赋值给自定义变量。例如set $my_port $server_port;
变量的作用域
在不同层级的标签中声明的变量性的可见性规则如下:
- location标签中声明的变量中仅对这个location块可见;
- server标签中声明的变量对server块以及server块中的所有子块可见;
- http标签中声明的变量对http块以及http块中的所有子块可见;
自定义变量示例
#1.在nginx配置文件中自定义变量:
[root@nginx01 ~]# vim /etc/nginx/conf.d/virtualhost.conf
server {
listen 80;
server_name www.nginx02.com;
set $name xuzhichao;
location / {
root /data/nginx/html/web2;
index index.html;
} location /a {
return 200 $name\n; <==此处无需使用引号;
}
location /b {
set $name momo;
return 200 $name\n;
}
} #2.重启nginx服务
[root@nginx01 ~]# systemctl reload nginx.service #3.客户端测试
[root@xuzhichao ~]# curl http://www.nginx02.com/a
xuzhichao
[root@xuzhichao ~]# curl http://www.nginx02.com/b
momo
WEB服务与NGINX(12)-NGINX的变量的更多相关文章
- flask在centos下搭建web服务【uwsgi,nginx】
centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...
- Web服务图片压缩,nginx+lua生成缩略图
背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...
- Web服务器之Nginx详解(操作部分)
大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...
- svn + nginx unit + python3自动化发布web服务方法
本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...
- 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务
基于docker+etcd+confd + haproxy构建高可用.自发现的web服务 2016-05-16 15:12 595人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主 ...
- linux web服务基础知识,dns
#web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx > web server 服务端浏览器 > web client 客户端 #dns解析 ...
- web服务的简单介绍及apache服务的安装
一,web服务的作用: 是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览: 可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...
- web服务基础
Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...
- nginx(二)nginx的安装
下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...
- 上传文件服务与web服务分离
业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...
随机推荐
- #min-max容斥,FWT#洛谷 3175 [HAOI2015]按位或
题目 分析 按位去看,最终的答案要求 \(E(\max S)\) 就是 \(S\) 出现的期望时间. 根据min-max容斥,\(E(\max S)=\sum_{T\subset S}(-1)^{|T ...
- 首届OpenHarmony竞赛训练营结营颁奖,75所高校学子助力建设开源生态
由OpenAtom OpenHarmony(以下简称"OpenHarmony")项目群工作委员会和OpenHarmony项目群技术指导委员会主办的首届OpenHarmony竞赛 ...
- SQL HAVING 子句详解:在 GROUP BY 中更灵活的条件筛选
SQL HAVING子句 HAVING子句被添加到SQL中,因为WHERE关键字不能与聚合函数一起使用. HAVING语法 SELECT column_name(s) FROM table_name ...
- HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求
随着移动互联网的逐步成熟,用户的需求越来越细化.鸿蒙生态为开发者提供的HarmonyOS SDK开放能力,高效赋能美团外卖等合作伙伴实现更具象.个性化的开发诉求,给用户提供更丰富便捷的体验. 点击链接 ...
- MogDB-opengauss中的聚集与分组操作
MogDB/opengauss 中的聚集与分组操作 COUNT:对结果集中的元组数量进行计数,如果是 COUNT(*),那么会统计所有元组(包括 NULL 值)的数量,如果是 COUNT(colnam ...
- 【中秋国庆不断更】HarmonyOS对通知类消息的管理与发布通知(下)
[中秋国庆不断更]HarmonyOS对通知类消息的管理与发布通知(下) 一.发布进度条类型通知 进度条通知也是常见的通知类型,主要应用于文件下载.事务处理进度显示.HarmonyOS提供了进度条模板, ...
- ActiveMQ C#消息队列系列一(安装)
前言 我前面写过ActiveMQ 如何在windows 上安装,但是呢,一般公司都是在Linux 上跑的,所以就来安装一下吧. 正文 1.进入官网下载linux 版本. 2.然后放置到Linux上. ...
- Linux systemd 定时任务
哈喽大家好,我是咸鱼. 说到 Linux 定时任务,大家用得最多的就是 crond 服务,但其实 systemd 也有类似的功能.我们不但可以通过 systemd 来管理服务,还能设置定时任务,那就是 ...
- 如何快速实现Prometheus监控Kubernetes集群
Prometheus K8S集群中常见的监控工具有哪些: Kubernetes Dashboard Kube-monkey K8s-testsuite Kubespray Minikube Prome ...
- 关于<property name="hibernate.hbm2ddl.auto"></property>中的参数填写
hibernate的数据库表自动生成参数 关于<property name="hibernate.hbm2ddl.auto"></property>中的参数 ...