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应用端上传文件,同时还要能 ...
随机推荐
- 【已解决】MySQL数据库8.0版本 连接失败错误码1251
错误原因: 是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password 解决方式: 1. cmd 进入 ...
- .Net Core AutoFac 使用方法讲解大全,具体详细使用知识总结
AutoFac 具体使用知识总结 阅读前提示 AutoFac 只是众多IOC框架的其中一种, 比较主流的有Unity.autofac.spring.net.MEF.Injection.Asp.Net ...
- 5W1H聊开源之What——开源协议有哪些?
开源许可协议是指开源社区为了维护作者和贡献者的合法权利,保证软件不被一些商业机构或个人窃取,影响软件的发展而开发的协议.开源协议规定了用户在使用开源软件时的权利和责任,虽然不一定具备法律效力,但是当涉 ...
- C++ 虚函数详解:多态性实现原理及其在面向对象编程中的应用
在面向对象的编程中,多态性是一个非常重要的概念.多态性意味着在不同的上下文中使用同一对象时,可以产生不同的行为.C++是一种面向对象的编程语言,在C++中,虚函数是实现多态性的关键 什么是虚函数 虚函 ...
- Pandas统计计算
基本的统计方法 Method Description count Number of non-NA values describe Compute set of summary statistics ...
- 面试官:Redis如何实现延迟任务?
延迟任务(Delayed Task)是指在未来的某个时间点,执行相应的任务.也就是说,延迟任务是一种计划任务,它被安排在特定的时间后执行,而不是立即执行. 延迟任务的常见使用场景有以下几个: 定时发送 ...
- MogDB企业应用 之 Rust驱动
引子 Rust 是一门系统编程语言,专注于安全,尤其是并发安全,支持函数式和命令式以及泛型等编程范式的多范式语言.Rust 在语法上和类似 C++,但是设计者想要在保证性能的同时提供更好的内存安全. ...
- 深入理解MD5算法:原理、应用与安全
第一章:引言 导言 在当今数字化时代,数据安全和完整性变得至关重要.消息摘要算法是一种用于验证数据完整性和安全性的重要工具.在众多消息摘要算法中,MD5(Message Digest Algorith ...
- vue3探索——组件通信之v-model父子组件数据同步
背景 再很多场景中,我们可能想在子组件中修改父组件的数据,但事实上,vue不推荐我们这么做,因为数据的修改不容易溯源. Vue2写法 在vue2中,我们使用.sync修饰符+自定义事件'update: ...
- CentOS-6.4启动盘制作过程
目标机器:ThinkPad X230 (i5-3210, 4G DDR3, 500G 7200转),预装win 8 目标系统:CentOS-6.4-x86_64-bin-DVD1.iso 主要参考文章 ...