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应用端上传文件,同时还要能 ...
随机推荐
- Python 简介和用途
什么是Python? Python是一种流行的编程语言,由Guido van Rossum创建,并于1991年发布. 它用于以下领域: 网页开发(服务器端) 软件开发 数学 系统脚本编写 Python ...
- C# Lock的用法
当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待.但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源 ...
- Linux Ubuntu配置国内源
配置国内源 因为众所周知的原因,国外的很多网站在国内是访问不了或者访问极慢的,这其中就包括了Ubuntu的官方源. 所以,想要流畅的使用apt安装应用,就需要配置国内源的镜像. 市面上Ubuntu的国 ...
- 【FAQ】视频编辑服务常见问题及解答
Q1问题描述 1. 访问贴纸等素材的时候提示"网络异常,请重试"怎么办? 2. 使用AI能力时,提示"errorCode:20124 errorMsg:Method no ...
- 携手HMS Core分析服务,以数据助力游戏高效增长
HMS Core分析服务,以数据助力游戏高效增长,覆盖玩家全生命周期运营场景,与华为应用市场强强联合,玩转智能运营. 了解更多: https://developer.huawei.com/consum ...
- 华为帐号为AITO问界M5助力,打造懂你的智能座舱
12月23日,在华为冬季旗舰新品发布会上,AITO问界M5正式发布.华为赋能的AITO问界M5搭载HUAWEI DriveONE纯电驱增程平台和HarmonyOS智能座舱,并且带来华为终端云服务软硬协 ...
- js小demo-迫使页面总是单独显示,不能被嵌入到iframe中
有时候我们的网页会被别人内嵌别人的网页 iframe 中,我们只需要在页面中增加以下js就可以让我们的页面内容单独显示出来,不被嵌入到 iframe中 核心JS代码 <script> if ...
- 在 macOS Big Sur 上安装 MySQL 8.x Compressed TAR Archive
因个人能力有限,文章难免存在错误,望斧正,感谢. 版本: macOS 11.6 Intel版本 MySQL 8.0.26 Compressed TAR Archive 一.准备所需文件 前往 MySQ ...
- sql 语句系列(分割ip)[八百章之第十四章]
前言 单独列出的章节.因为用处比较多. mysql select SUBSTRING_INDEX(SUBSTRING_INDEX("192.168.1.1",".&quo ...
- Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET 版本
前言: 上次发布了:Taurus.MVC 性能压力测试(ap 压测 和 linux 下wrk 压测):.NET Core 版本 今天计划准备压测一下 .NET 版本,来测试并记录一下 Taurus.M ...