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;

  • 变量的作用域

    在不同层级的标签中声明的变量性的可见性规则如下:

    1. location标签中声明的变量中仅对这个location块可见;
    2. server标签中声明的变量对server块以及server块中的所有子块可见;
    3. 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的变量的更多相关文章

  1. flask在centos下搭建web服务【uwsgi,nginx】

    centos操作系统 uWSGI是一个web服务器,Nginx进行反向代理的其实跟这些服务器可以说没有任何关系,你提供动态内容的服务器可以是apache/nginx/tomcat,当然也可以是uWSG ...

  2. Web服务图片压缩,nginx+lua生成缩略图

    背景 目前而言,用移动端访问Web站点的用户越来越多,图片对流量的消耗是比较大的,之前一个用户用我们网站的app浏览的时候,2个小时耗去了2个G的流量,这是个很严重的问题,需要对图片进行压缩,减少对用 ...

  3. Web服务器之Nginx详解(操作部分)

    大纲 一.前言 二.Nginx 安装与配置 三.Nginx 配置文件详解 四.Nginx 命令参数 五.配置Nginx提供Web服务 六.配置Nginx的虚拟主机 七.配置Nginx的用户认证 八.配 ...

  4. svn + nginx unit + python3自动化发布web服务方法

    本周将python web服务管理更换成nginx unit以后发现接口性能有了明显的提升,访问速度快了不少.不过有个很大的问题就是使用svn自动化发布以后,服务并没有刷新使用新的代码运行,而又不懂得 ...

  5. 基于docker+etcd+confd + haproxy构建高可用、自发现的web服务

    基于docker+etcd+confd + haproxy构建高可用.自发现的web服务 2016-05-16 15:12 595人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主 ...

  6. linux web服务基础知识,dns

    #web服务基础知识c/s 客户端/服务器b/s 浏览器/服务器 nginx   >   web  server  服务端浏览器  >    web  client  客户端 #dns解析 ...

  7. web服务的简单介绍及apache服务的安装

    一,web服务的作用:  是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档.可以放置网站文件,让全世界浏览:   可以放置数据让全世界下载.目前最主流的三个Web服务器是Ap ...

  8. web服务基础

    Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到 ...

  9. nginx(二)nginx的安装

    下载 nginx官网下载地址 把源码解压缩之后,在终端里运行如下命令: ./configure make make install 默认情况下,Nginx 会被安装在 /usr/local/nginx ...

  10. 上传文件服务与web服务分离

    业务场景:1. 后端服务为java web应用,使用tomcat容器,多实例集群化部署.2. 前端使用nginx作为后端应用的反向代理. 业务需求:现在需要在java web应用端上传文件,同时还要能 ...

随机推荐

  1. Vim 速查表 做记录 便于记忆

    Vim 命令速查表 简体中文 • English 简介:Vim 命令速查表,注释化 vimrc 配置文件,经典 Vim 键盘图,实用 Vim 书籍,Markdown 格式,目录化检索,系统化学习,体系 ...

  2. 14 CSS列表属性和display属性

    14 列表属性和display属性 列表属性 CSS中提供了一些列表属性可以用来: (1).设置不同的列表项标记为有序列表 (2).设置不同的列表项标记为无序列表 (3).设置列表项标记为图像 lis ...

  3. #树状数组#洛谷 3531 [POI2012] LIT-Letters

    题目 给出两个长度相同且由大写英文字母组成的字符串\(A\).\(B\),保证\(A\)和\(B\)中每种字母出现的次数相同. 现在每次可以交换\(A\)中相邻两个字符,求最少需要交换多少次可以使得\ ...

  4. vue3中的样式为什么加上scoped不生效

    <style>标签添加scoped属性时,Vue会自动为该组件内的所有元素添加一个独特的数据属性,例如data-v-f3f3eg9.同时,它也会修改你的CSS选择器,使得它们只匹配带有这个 ...

  5. HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求

    随着移动互联网的逐步成熟,用户的需求越来越细化.鸿蒙生态为开发者提供的HarmonyOS SDK开放能力,高效赋能美团外卖等合作伙伴实现更具象.个性化的开发诉求,给用户提供更丰富便捷的体验. 点击链接 ...

  6. MogDB/openGauss中merge的语法解析

    MogDB/openGauss 中 merge 的语法解析 近期了解学习了 MogDB/openGauss 中 merge 的使用,merge 语法是根据源表对目标表进行匹配查询,匹配成功时更新,不成 ...

  7. HarmonyOS课程体验官招募(第四期),寻找乐于分享,精益求精的伙伴

      华为开发者联盟HarmonyOS课程体验官(第四期)活动,开始招募啦! 如果你精益求精.乐于分享:如果你愿意为学堂课程优化改进出谋划策,那就快来加入我们吧!学堂期待与你共同成长.一起进步! [活动 ...

  8. Mysql之主从异步

    数据库创建完后主从数据库数据保持同步 主数据库 mysql> SHOW MASTER STATUS; +------------------+----------+--------------+ ...

  9. 鸿蒙HarmonyOS实战-ArkUI组件(Image)

    一.Image 在HarmonyOS中,Image组件是用于显示图像文件的UI组件.它可以显示本地图像文件或远程URL地址的图像文件.Image组件的实现方式比较简单,只需提供图像文件路径或URL地址 ...

  10. 【GDKOI 2024 TG Day2】染色(set) 题解

    发现我们给一个点染上色后有: 我们称这是一个大小为 1 的十字. 进一步地,我们给这 5 个点再次染上色后有: 我们称这是一个大小为 2 的十字. 同理可得,我们给这 5 个点染上相同的大小为 2 的 ...